はじめに
SSHで接続したサーバー上で、バッチ処理など実行に時間がかかる処理を手動で走らせる機会がありました。その際に走らせながら抜ける方法があったので覚書。
方法
0.スクリプトを実行する
# sh hoge.sh
とか
# python hoge.py
とかとか
1.Ctrl+z で実行状態から抜ける
^Z
// ※実行したスクリプトが停止状態になる
2.job の状態を確認
# jobs
行の先頭にジョブ(実行中のスクリプト)の番号が出る。これを後続のコマンドで使う。(今回は1)
3.ジョブをバックグラウンド実行に切替
# bg %1
job が実行中になるはず
4. ログインユーザーがジョブを持っていないことを確認
# jobs
5.処理を継続できるようにジョブテーブルから削除する
# disown %1
現在のシェルで実行中のジョブを管理しているジョブテーブルから、ジョブを削除します。実行に時間がかかるコマンドなど、「シェルを終了させても、終了させたくないジョブ」がある場合に使用
【 disown 】コマンド――シェルのジョブテーブルからジョブを削除する
実行状況は、ps aux や top で確認できる。
まとめ
処理中にトラブルで接続が切れたりした時はちょっとヒヤッとしますがこれで走らせながら抜けることができるようになったので一安心です。