В моей ситуации у меня есть один скрипт оболочки, запускающий rsync и tar в фоновом режиме. Rsync используется для передачи файлов, а tar выполняет сжатие после завершения rsync. Моя проблема в том, как отслеживать pid rsync и сообщать команде tar о необходимости запуска, когда pid rsync больше не существует.
Скрипт оболочки может выглядеть так:
rsync data.log B/ &
tar data.tar.gz B/data.log &
решение1
это довольно просто: вам нужно сохранить pid-переменную с помощью:
PID_1=$!
Чтобы проверить идентификатор процесса, просто выполните команду kill -0, например:
while True:
if [ 'kill -0 $PID_1' -eq 0 ]; then
echo Process still running
else
echo process done
(Если код не работает должным образом - мне очень жаль. Я писал в постели :-))
Для пояснения: 'kill -0 $PID_1' возвращает 0 или, очевидно, 1. Если это 0, процесс выполняется, а если это единица, процесс завершен. Вы можете проверить код возврата с помощью 'echo $?'.
Надеюсь, это поможет.