タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

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

メモ。

ターミナル終了後もプロセスを継続させたいとき - 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)します。