web-dev-qa-db-ja.com

sshを介してリモートマシンでリモートプロセスを開始するにはどうすればよいですか?

リモートマシンに常駐するシェルスクリプトを起動したい。私が使うとき

ssh [email protected] /path/to/script.sh

スクリプトが終了するまで、ssh接続を開いておく必要があります。

ただし、ssh接続を閉じた後でも、スクリプトが自動的に終了するまで、スクリプトを実行し続ける必要があります。プロセスを開始して、それを忘れたいだけです。

Sshを使用してこれを行うにはどうすればよいですか?

どうもありがとう!

追伸:これは このstackechangeの質問 の重複ではありません。

2
Gary Czychi

問題は、SSHセッションが(ctrl-cを押すか、xtermを閉じることによって)閉じられると、HUPがプロセスに送信されることだと思います。プロセスをバックグラウンドにフォークするには、&を追加し、hupをブロックするには、Nohupを使用します。

ssh [email protected] 'Nohup sleep 300 >/dev/null 2>/dev/null </dev/null &'

Sshが起動し、プロセスがバックグラウンドでexample.comで実行されます。

進行状況を監視したい場合は、screenを使用できます。監視したい場合は、次のような方法が役立ちます。

ssh [email protected] -t 'screen -D -RR -S this /bin/sleep 300'

これにより、「this」(-S)という名前の画面セッションが作成され、他の場所に接続されている場合はすでに実行中の画面が切り離され、ここに再接続されます。次に、5分間待機して/ bin/sleepを開始します。

3
Ed Neville