3
#!/bin/bash
# My first script
sleep 15 & wait
python pythonFileName.py & wait
python pythonFileName.py & wait
python pythonFileName.py & wait

Как заставить его ждать завершения предыдущей строки перед тем, как перейти к следующей?

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

1 ответ1

2

Это будет работать только один за другим, все ниже одинаковые:

#!/bin/bash
# My first script
sleep 15 & wait
python pythonFileName.py & wait
python pythonFileName.py & wait
python pythonFileName.py & wait


#!/bin/bash
# My first script
sleep 15 
python pythonFileName.py 
python pythonFileName.py 
python pythonFileName.py 

<Command> & wait С этим ничего особенного не получишь

& примет процесс в фоновом режиме

wait заставит родительский процесс ждать изменения состояния дочернего процесса

UID       PID   PPID
root     28065 28064  0 12:48 ?        00:00:00 /bin/sh -c /bin/bash /home/8zero2/Desktop/b.sh 
root     28067 28065  0 12:48 ?        00:00:00 /bin/bash /home/8zero2/Desktop/b.sh
root     28074 28067  0 12:48 ?        00:00:00 sleep 15


root     28065 28064  0 12:48 ?        00:00:00 /bin/sh -c /bin/bash /home/8zero2/Desktop/b.sh 
root     28067 28065  0 12:48 ?        00:00:00 /bin/bash /home/8zero2/Desktop/b.sh
root     28075 28067  0 12:48 ?        00:00:00 python pythonFileName.py


root     28065 28064  0 12:48 ?        00:00:00 /bin/sh -c /bin/bash /home/8zero2/Desktop/b.sh 
root     28067 28065  0 12:48 ?        00:00:00 /bin/bash /home/8zero2/Desktop/b.sh
root     28077 28067  0 12:48 ?        00:00:00 python pythonFileName.py


root     28065 28064  0 12:48 ?        00:00:00 /bin/sh -c /bin/bash /home/8zero2/Desktop/b.sh 
root     28067 28065  0 12:48 ?        00:00:00 /bin/bash /home/8zero2/Desktop/b.sh
root     28074 28067  0 12:48 ?        00:00:00 python pythonFileName.py

коррелируйте столбцы ppid и pid, вы заметите последовательное выполнение только в обоих случаях

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .