web-dev-qa-db-ja.com

SSHからシェルスクリプトを起動して切断します

SSHから実行するスクリプトがあり、セッションから切断したときに開いたままにしておきたいいくつかのプロセスを起動します。

それは実行可能ですか?スクリプトをバックグラウンドで起動することは解決策ではありません。

[〜#〜] update [〜#〜]

私のスクリプトは、異なるクラスパスでJavaプロセスを起動し、他の4つのスクリプトを呼び出します。各スクリプトは、異なるクラスパスで異なるJavaプロセスを起動します。

1
Edmondo1984

プロセスがややインタラクティブである/デーモンとして実行するのに適していない場合は、 GNU Screen または tmux のようなものを探しています-どちらもセッションを開始できますそれらの中に複数のウィンドウがあり、そのセッションをデタッチして再アタッチします。

tmux new-session session-1
# start an application
C-b d # C-b means Ctrl-b
# You're now back in your terminal and can disconnect from the server
# After connecting again, use
tmux attach -t session-1
# to get back to your previously created session.

画面のワークフローは似ていますが、頭から離れてわかりません。

5
Wieland

「開いたままにする」の意味によって異なります。 reconnectしばらくしてから出力を確認して対話したい場合は、Wielandがすでに適切なアドバイスを提供しています。終了時にそれらを実行し続けたい場合は、Nohupを使用してみてください。これは前景または背景である可能性があり、それでうまくいきます。

3
Leonid

@Wielandの回答を完成させるには、GNU Screen this way:

 screen -S session-name 
#ここでアプリケーションを開始します
 C-a d#C-aはCtrlキーと「a」キーを意味します。 「d」は「デタッチ」の略です
#これでターミナルに戻り、サーバーから切断できます
 
#再度接続したら、
 screenを使用します-r session-name 
#以前に作成したセッションに戻ります。
1
mveroone