bash上で何かプログラムを走らせている時に、ログアウトしてもプロセスを動かし続ける方法として、いくつかまとめてみました。
- nohupを使う
コマンド起動時に、
$ nohup ./プログラム名 &
としてログアウトする - screenを使う
コマンド起動前に、
$ screen
のコマンドを実行しておき普通通りプログラムを実行する$ ./プログラム名
その後、"Ctrl-a" "d" を押してscreenからぬけ、ログアウトする。 - disownを使う
コマンド起動後
$ ./プログラム名
Ctrl-z でサスペンドして、バックグランドで実行$ bg
その後disownを実行してログアウトする$ disown
1,2はプログラム起動時に気をつけないといけないですが、実行してしまった後にどうにかしたい場合は3を使う必要があります。
標準出力は、1はnohup.out にリダイレクトされます。2はscreenという仮想端末上で実行されていますので、後でログインしてscreenコマンでアタッチすることで同じ画面に戻ることができます。3は ログアウトすると捨てられてしまうようなので、予め出力をリダイレクトしたりteeでファイルに保存しておく必要があります。