読者です 読者をやめる 読者になる 読者になる

元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

ターミナル終了後もプロセスを継続させたいとき

メモ。

ターミナル終了後もプロセスを継続させたいとき - masutaroの日記

$ nohup コマンド &

$ Ctrl + z
$ jobs
$ bg %ジョブ番号
$ disown %ジョブ番号

ログアウトしてもバックグラウンド ジョブを継続する方法

例2 標準出力先を指定する

  $ nohup ./abc.sh > out.log &

例3 標準エラー出力先を指定する

$ nohup ./abc.sh > out.log 2> err.log &

注意点 標準入力を閉じる SSH でログインしている場合は3つの I/O ストリーム をリダイレクトしておきます。SSH 接続でバックグラウド ジョブを実行する場合、日常的に標準出力、標準エラー出力をリダイレクトしていると思いますがここで重要なのは標準入力を閉じておくことです。具体的には /dev/null にします。

$ nohup ./abc.sh > out.log 2> err.log < /dev/null &

詳しいことは SSH Frequently Asked Questions をご覧下さい。

バックグラウンド ジョブとして実行する

もうひとつ、nohup は実行したプログラムを自動的にバックグラウンド ジョブにするものではありません。バックグラウンドで実行するなら & を付けて実行するか bg コマンドで移行させましょう。

実行中のプログラムを終了する nohup で実行中のプログラムを終了させるにはプロセスIDを調べて kill コマンドで強制終了(kill -KILL)します。