Вы должны либо просто удалить &
в конце каждой команды, что заставит оболочку запускать команды , а не как фоновые задачи, или, если вам действительно нужно запускать их как фоновые задачи (поскольку вы также делаете другие вещи параллельно ), вам нужно будет сохранить PID процесса в переменной, а затем wait
для его завершения:
./extract.sh 1553212800 1554854400 & pid="$!"
# other things
wait "$pid"
./extract.sh 1554854400 1556668800 & & pid="$!"
# other things (again)
wait "$pid"
# etc.
Лично, если бы у меня был длинный список таких команд, я бы поместил их все в один скрипт, например
#!/bin/sh
./extract.sh 1553212800 1554854400
./extract.sh 1554854400 1556668800
(примечание, нет фоновых заданий)
Тогда я бы, наверное, начал скрипт сnohup
:
nohup./script.sh &
Это позволило бы мне выйти из системы, а затем снова войти в систему, чтобы увидеть, выполняется ли еще процесс сценария (, проверив с помощьюps
).
Или я просто запустил tmux
сеанс, затем запустил скрипт как обычный (нетnohup
)и нажал Ctrl+Bd , чтобы отсоединиться от него. Позже я мог вернуться к тому же сеансу оболочки с помощью tmux attach
. См. руководство tmux
.