0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Linuxのターミナルで処理を長時間する時に途中でもターミナルを終了できる方法

Last updated at Posted at 2021-08-06

端末を閉じたりログアウトしたりしても処理を継続させる方法

処理時間が長い処理を走らせる時などで、ターミナルやリモート接続で実行してても途中でターミナルを終了させたり接続が切れても処理を継続できる方法をメモしておく。

実行時に設定する

コマンドとしてはnohupを使う。

実行時にターミナルが閉じたりしても実行を続行させる
$ nohup コマンド &

コマンド実行時に端末が閉じたりログアウトすると、実行中のプロセスにHUPシグナルが送られ、そのままプロセスも終了する。特にリモートで接続していると接続が切れたり長時間接続し続けないといけないので大変。なのでHUPシグナルを無視して実行し続けるnohupコマンドを使う。

実行時に&をコマンドの後ろに付けるだけでも大丈夫な場合もあるが、使っているシェルの種類にもよるのでこちらが安定かな。

実行した後に設定する

実行時にnohupコマンドを忘れたり、実行後に長時間かかることが分かって、後からHUPシグナルを無視して実行してほしい時に設定する方法。

  1. ctrl+zで対象のプロセスを一時停止する。
  2. バッググラウンドでbgコマンドで一時停止したプロセスを再開させる。
  3. disownコマンドを使い、ジョブテーブルから対象のプロセスを削除する。
1はプロセス番号
$ bg 1
$ disown %1

以上

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?