サーバーで長いプログラムを実行しています。これは基本的にJavaプログラムのJarファイルです。SSHターミナルが閉じている場合でもこのプログラムを実行し続けたいのですが、このプログラムをサーバーで実行し続けるにはどうすればよいですか?
2つの異なる方法:
Nohup
を使用-Nohup /path/to/program &
でプログラムを開始すると、Nohupはプログラムを実行し続け、出力は現在のディレクトリのファイルNohup.out
にリダイレクトされますscreen
またはtmux
を使用します。これらは、1つ以上のシェルを維持して、次にログインしたときにそれらに再アタッチできるようにする方法です。これは、Nohupよりもはるかに強力なユーティリティです。詳細については、man screen
またはman tmux
をご覧ください。以下は、Nohupを使用せずに、すでに開始したプロセスを実行し続ける方法です。
大きなアーカイブの解凍を開始し、帰宅したいとします。
$ tar -xzf bigfile.tar.gz
Ctrl-zを押して、プロセスをバックグラウンドに送信します。 「ジョブ」と入力してEnterキーを押すと、プロセスのジョブ番号が表示されます。おそらく1です。
次に行います:
$ disown %1
Screenとtmuxのどちらも機能します。
それを使用する方法の簡単なチュートリアルについては、例えば、 http://www.jeffstory.org/wordpress/?p=132 を参照してください。
私は Apache Daemon を使用したことがありませんが、それはあなたが望むことをするかもしれません。 Javaプログラムをデーモンとして、バックグラウンドのプロセスとして実行します。
次に htop を使用してこのプロセスを監視し、リソースが多すぎる場合は停止します。
Htop apt-getをインストールする必要があります。
Sudo apt-get install htop
次に、
htop
プロセスが表示されたら、リストで(矢印キーを使用して)プロセスを選択して強制終了し、次にを押して強制終了できます。
f9, k