bash上で何かプログラムを走らせている時に、ログアウトしてもプロセスを動かし続ける方法として、いくつかまとめてみました。

  1. nohupを使う コマンド起動時に、
    $ nohup ./プログラム名 &
    としてログアウトする
  2. screenを使う コマンド起動前に、
    $ screen
    のコマンドを実行しておき普通通りプログラムを実行する
    $ ./プログラム名
    その後、"Ctrl-a" "d"  を押してscreenからぬけ、ログアウトする。
  3. disownを使う コマンド起動後
    $ ./プログラム名
    Ctrl-z でサスペンドして、バックグランドで実行
    $ bg
    その後disownを実行してログアウトする
    $ disown

1,2はプログラム起動時に気をつけないといけないですが、実行してしまった後にどうにかしたい場合は3を使う必要があります。

標準出力は、1はnohup.out にリダイレクトされます。2はscreenという仮想端末上で実行されていますので、後でログインしてscreenコマンでアタッチすることで同じ画面に戻ることができます。3は ログアウトすると捨てられてしまうようなので、予め出力をリダイレクトしたりteeでファイルに保存しておく必要があります。