サーバの接続切れてもコマンドを実行する ~ nohup
リモートサーバで接続切れたあともコマンド実行を続ける
リモートサーバで作業をしていて、ちょっと時間がかかるスクリプトを実行していたら、接続切れた
$ Write failed: Broken pipe
これが計算を始めて、1時間くらい経っていると結構なえる。バックグラウンドでコマンドを実行してくれるのが、nohup。
例えば、a.outを実行するときは
$ nohup ./a.out &
nohup "コマンド" &って感じで使う。
あとは、帰る直前にコマンド実行したいときとか、とにかくssh先からログアウトしたあとも、コマンドを動かし続けたいときに使える。
自分はipython notebookをサーバで動かしているので、
nohup ipython notebook --profile=myserver &
とすると、ログアウトしたあとも実行がつづく。
ちなみに、nohupはプロセスとして動くので、"ps x"コマンドで確認できる。
$ ps x PID TTY STAT TIME COMMAND 8619 ? Sl 111:41 /home/hoge/ENV/bin/python2.7 /home/hoge/ENV/bin/ipython notebook --profile=myserver 19819 ? S 0:00 sshd: hoge@pts/0 19820 pts/0 Ss+ 0:00 -bash 19961 ? R 0:00 sshd: hoge@pts/1 19962 pts/1 Ss 0:00 -bash 20019 pts/1 R+ 0:00 ps x
実行をストップしたいときは、PIDを指定してkillコマンドを使う。
$ kill 8619