既に実行中のジョブを走らせたまま端末を閉じる際の手順メモ

計算サーバ等で既に実行し始めてしまった時間のかかるプロセスについて、走らせ続けたまま端末を閉じたいことがある。

実行し始める前のプロセスについては、 nohup を使った方法がある。

ここでは、通常のコマンドで実行し始めてしまったプロセスについて考える。

disown を使う

時間がかかるタスクを通常のコマンドで実行し始めてしまったとする:

$ ./heavy_task.sh

対象のジョブを一旦停止する:

^Z

対象のジョブをバックグラウンド実行する:

$ bg

ジョブ番号を確認する:

$ jobs

disown コマンドによってバックグラウンド実行中のジョブをジョブテーブルから除外する:

$ disown %1

(これは対象のジョブ番号が1だったときの入力例)

以上の操作によって、端末を閉じてもプロセスは残ったままになる。

参考: