1

このスレッドのように、バックグラウンド プロセスの PID を取得するにはどうすればよいですか? 、バックグラウンドプロセスのPIDを取得する方法を知っています。ただし、私が行う必要があるのは、複数の操作をカウントすることです。

{
           sleep 300;

           echo "Still running after 5 min, killing process manualy.";
           COMMAND COMMAND COMMAND

           echo "Shutdown complete"
}&
PID_CHECK_STOP=$!
some stuff...
kill -9 $PID_CHECK_STOP

しかし、うまくいきません。PIDが悪いか、それを殺すことができないようです。ps | を実行しようとしました。grep sleep とそれが与える pid は、常に PID_CHECK_STOP で取得したもののすぐ隣にあります。それを機能させる方法はありますか?これらのコマンドを別の方法でラップして、必要なときにすべてを強制終了できますか?

ありがとう!

4

3 に答える 3

1

これらのコマンドを含む別のスクリプトを用意して、そのスクリプトを強制終了できます。ブロックのコードを動的に生成する場合は、スクリプトを書き、それを実行し、完了したら kill します。

于 2013-06-06T13:20:03.893 に答える
0

ステートメントを囲む{ ... }と新しいシェルが開始され、後でそのPID を取得します。sleepブロック内の他のコマンドは個別の PID を取得します。

説明のために、プロセスを探しますps afux | less- 親シェルプロセス ( の上sleep) には、与えられたばかりの PID があります。

于 2013-06-06T13:21:03.860 に答える