コマンドのプロセスIDを取得する方法

コマンドのプロセスIDを取得する方法

バッチモードでいくつかのコマンドを実行しています。既存のコマンドが完了したら追加の操作を実行する必要があるため、コマンドが完了するまで待つ必要があります。

たとえば、

bsub -q gui -I calibre -drc -batch
wait 

waitコマンドに記載されているジョブのプロセスIDを取得する方法、または既存のコマンドが終了するのを待つ他の代替案を教えてください。

答え1

この試み

bsub -q gui -I calibre -drc -batch & pid=$!
wait ${pid}

ここにpid変数があります。どんな名前でも指定できます。

答え2

組み込み待つコマンドはすでに操作を実行する必要があります。バックグラウンドで実行されてbsubも完了するまで待つ必要があります。bsubただし、必要でない場合は、waitPIDを取得するためにまたはを使用してから、「完了するまで待機」ルーチンを直接作成できます。pgrep bsubps -eo pid,comm | grep bsub

答え3

$ {pid}の親コマンドpid = $ !waitを試しましたが、エラーが発生しました。

「待つ引数が多すぎます。」

調査し、可能であれば解決策を提示してください。

ありがとうございます

答え4

pgrep bsubも使用する上記のコマンドを試してから、pgrep bsubがまだエラーを受け取るのを待ちます。

「待つ引数が多すぎます。」

調査し、可能であれば解決策を提示してください。

ありがとうございます

関連情報