В моей ситуации у меня есть один сценарий оболочки, в котором в фоновом режиме запускаются rsync и tar. Rsync используется для передачи файлов, а tar выполняет сжатие после завершения rsync. Моя проблема в том, как отслеживать pid rsync и заставлять команду tar запускаться, когда pid rsync больше не существует.
Сценарий оболочки может выглядеть так:
rsync data.log B/ &
tar data.tar.gz B/data.log &
это довольно просто: вам нужно сохранить переменную pid с помощью:
PID_1=$!
Чтобы проверить id, прогресс все еще идет, просто введите 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 $?».
Надеюсь, это поможет.