Запустить другой процесс после завершения фонового процесса

Вы можете зашифровать любой существующий файл с помощью того же инструмента и параметров шифрования, используя стандартное перенаправление оболочки. Например:

openssl des3 -salt -k #PASSWORD# < oldfile.tar.gz > newfile.tar.gz

, если вы хотите заменить старый файл новой зашифрованной версией, тогда:

openssl des3 -salt -k #PASSWORD# < oldfile.tar.gz > newfile.tar.gz && mv -f newfile.tar.gz oldfile.tar.gz
2
13.08.2018, 07:11
2 ответа

Нет семантической разницы между

for id in 1 2 3
do
bash running_script1.sh $id &   (#complete 1 minute/looping)
done

и

bash running_script1.sh 1 &
bash running_script1.sh 2 &
bash running_script1.sh 3 &
wait
echo "running script2..."
bash running_script2.sh

Этот демонстрационный сценарий, приведенный ниже, выполняется немногим более 3 с (вы можете timeего )независимо от того, является ли команда условия trueилиfalse:

#!/bin/sh -eu
for i in 1 2 3; do
    echo "sleep $i" > $i && chmod +x $i
done
if false; then
    for i in 1 2 3; do
        bash./$i &
    done
else
    bash./1 &
    bash./2 &
    bash./3 &
fi
wait

Если вы по-прежнему сталкиваетесь с расхождениями, опубликуйте mcve .

2
27.01.2020, 22:17

Не знаю, правильный ли это подход, но я использовал screen для запуска скрипта
screen — это виртуальный терминал для запуска процесса в bg

for id in 1 2 3
do
screen -d -m bash script1.sh $id
done
wait
echo "running script2..."
bash script2.sh

экран -d -m запустит скрипт и закроет экран после завершения скрипта.
Я не могу получить вывод script1 в стандартном выводе при использовании экрана, поэтому я использовал файл для хранения вывода script1.

0
27.01.2020, 22:17

Теги

Похожие вопросы