Ssh ログアウトでプログラムを実行し続ける方法


ssh セッションなしでジョブを実行し続ける必要がある場合があります.これを実現する方法は 3 つあります. Linux/Unix システムで長時間作業している場合は、ターミナル マルチプレクサーを長期的に学習することをお勧めします.

オプション 1: nohup



最良かつ最も簡単な方法は次のとおりです.

nohup long-running-command &


このために特別に作成されました.デフォルトでは、標準出力が nohup.log に記録されます.標準出力が端末でない場合、ログは ~/nohup.log に追加されます.出力ログを別のファイルに指定する場合:

nohup COMMAND > FILE


詳細は man nohup を参照してください. nohup が行うことは、プロセスを端末から効果的に分離することです.
  • 標準入力を閉じます (フォアグラウンドで実行された場合でも、プログラムは入力を読み取ることができません.プログラムは停止しませんが、エラー コードまたは EOF を受け取ります).
  • 標準出力と標準エラーをファイル nohup.out にリダイレクトするため、端末に障害が発生してもプログラムは標準出力への書き込みに失敗せず、プロセスが書き込むものはすべて失われません.
  • プロセスが SIGHUP (したがって名前) を受け取るのを防ぎます.

  • オプション 2: bg + disown



    プログラムを既に開始していて、再起動したくない場合は、ctrl+z を使用して現在の実行を停止し、bg を使用して再開し、実行中のプログラムをバックグラウンドに切り替えることができます (fg を使用して、ジョブをフロントグラウンドにプルできます).

    最後に、disown を使用して、シェルのジョブ コントロールからプロセスを削除します.

    したがって、ssh セッションからログアウトしても、プログラムは引き続きバックグラウンドで実行されます.

    ctrl+zbgdisown -h
    


    オプション 3: 端末マルチプレクサーを使用する



    これには、[[screen]]、[[tmux]]、[[byobu]] の 3 つの選択肢があります.
    screentmux はよく使われるものです. Ubuntu または Debian システムでは、次のようにインストールします.

    sudo apt-get install screen sudo apt-get install tmux
    


    Byobu は GNU Screen の拡張機能です.次のコマンドでインストールできます.

    sudo add-apt-repository ppa:byobu/ppasudo apt-get updatesudo apt-get install byobu