ログアウトしてもプロセスを止めないようにする@bash

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

タイトルとURLをコピーしました