スクリーンセッション内で実行されたスクリプトが完了したかどうかはわかりますか?と入力してスクリプトを表示できます。スクリプトが完了したら終了したいとjobs
思います。screen session
どうすればいいですか?それとも、スクリプトが正常に実行された後に画面を自動的に終了させることはできますか?一度に72のスクリーンセッションを実行しているので、これを手動で実行するのは便利ではありません。スクリーンセッションでジョブのステータスを自動的に確認して印刷しstdout
、実行中のジョブが完了したらセッションを終了する方法があればscreen
よいでしょう。
答え1
コマンド1と2を接続するだけですyour_script
。kill this screen session
それをfoo.sh
あなたのスクリプトにしてください。スクリーンセッションを終了するコマンドはですkill
。 shell / bashコマンドが現在進行中のscreenセッションを終了させるにscreen -X
は、screenセッションで実行されたコマンドを使用します。screen -X kill
あなたはでしょう
screen -S the_session_for_my_job
スクリーンセッションを作成すると
/path/to/foo.sh; screen -X kill
これにより、ウィンドウの数に関係なくスクリーンセッションが終了し、foo.shが完了した後に終了します。
より洗練されたアプローチは、プロセスIDを観察し、特定のPIDが消えたときにkillコマンドを実行することです。
監視するプロセスのPIDを12345に設定します。それからあなたはそうでしょう
while ps a | grep ^12345;do sleep 2; done; screen -X kill
whileループは、プロセスリストにPID 12345を持つプロセスがあるかどうかを監視します。これらのプロセスが存在する場合は、2秒間スリープ状態を維持してからもう一度確認してください。そのPIDを持つプロセスがない場合、whileループは終了します。次に kill コマンドを実行します。
答え2
私は次の内容を含む電子メールを使用します。
command | mail-s job_output [email protected]; exit
または、すでに実行している場合は、完了時に実行するコマンドを入力(または出力が多い場合はコピーして貼り付け)できます。
echo $STY done | mail -s job_done [email protected]; exit