バックグラウンドジョブのリアルタイムモニタリング

バックグラウンドジョブのリアルタイムモニタリング

私は次のコマンドを実行しましたnohup some_command &。このコマンドはバックグラウンドで実行されます。コマンドとして見ることができますjobs

出力例:

[1]+  Running                 nohup some_command &

どういうわけか持てますか?生きる次のようなコマンドのjobs状態表現top働く?それでは、nohup some_command &完了するとリストからすぐに消えますか?

答え1

プロンプトに入力している場合、または他のジョブがフォアグラウンドにあるときにジョブ完了通知をすぐに印刷したい場合は、を実行してくださいset -o notify

フォアグラウンドコマンドに現在のシェルのバックグラウンドジョブのステータスを表示させるには、jobsループで実行できます。フルスクリーンモードでは簡単に実行できます。

tput clear
jobs
while sleep 1; do
  tput clear
  jobs
done

画面を消去せずにプロンプ​​トの下にリストを表示するには、最初にカーソル位置を保存し、実行するたびに復元します。

tput sc
jobs
while sleep 1; do
  tput rc
  jobs
done

答え2

シェル関数を生成できます。

myjobwatch() { while true; do jobs; sleep 2; clear; done; }

それからただ実行myjobwatch

関連情報