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でファイルに保存しておく必要があります。