40

SSH を使用して、リモート サーバーでバックグラウンド プロセスを開始しています。これは私が現時点で持っているものです:

ssh remote_user@server.com "nohup プロセス &"

これは、プロセスが開始されるという点で機能します。しかし、Ctr-C を押すまで SSH セッション自体は終了しません。

Ctr-C を押すと、リモート プロセスがバックグラウンドで実行され続けます。

ローカルで実行できるスクリプトに ssh コマンドを配置したいので、リモート プロセスが開始されたら ssh セッションが自動的に終了するようにします。

これを実現する方法はありますか?

4

4 に答える 4

49

ssh の「-f」オプションは、リモート コマンドをバックグラウンドで実行し、すぐに戻るように ssh に指示します。例えば、

ssh -f user@host "echo foo; sleep 5; echo bar"

上記を入力すると、すぐにシェル プロンプトが返され、"foo" の出力が表示されます。5 秒後、"bar" 出力が表示されます。それまでの間、シェルを使用していた可能性があります。

于 2014-03-12T21:33:28.427 に答える
5

screenこの画面でプロセスを実行し、画面から切り離しCtrl-a :detachて現在のセッションを問題なく終了するために使用できます。次に、SSH に再接続し、この画面に再度接続して、タスクを続行するか、完了したかどうかを確認できます。

または、既に実行中の画面にコマンドを送信できます。ローカル スクリプトは次のようになります。

ssh remote_user@server.com
screen -dmS new_screen sh
screen -S new_screen -p 0 -X stuff $'nohup process \n'
exit    

詳細については、このチュートリアルを参照してください

于 2013-11-15T08:19:17.803 に答える