私の状況では、バックグラウンドで rsync と tar を実行するシェル スクリプトが 1 つあります。rsync はファイルの転送に使用され、tar は rsync の終了後に圧縮を行います。私の問題は、rsync の pid を監視し、rsync の pid が存在しなくなったときに tar コマンドを開始するように指示する方法です。
シェル スクリプトは次のようになります。
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 の場合、プロセスは実行中であり、1 の場合、プロセスは完了しています。 'echo $?' で戻りコードを確認できます。
これが役に立つことを願っています。