忘れないようにメモっとく

機械学習とかプログラミングとか。

サーバの接続切れてもコマンドを実行する ~ 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