ssh上のnohupは返されません


11

私がやろうとしている

[me@myPc]$ ssh me@server "nohup myBashScript.sh &"

私の目標は、サーバー上でプロセスを起動し、すぐに戻ることです。

それは機能していません:ジョブはサーバーで開始されますが、myPcで出力を取得し、bashが完了するのを待ってから別のコマンドを要求します。

どうして ?それは想定されていません!それを回避する方法はありますか?

  • myPcは RHEL6.2
  • サーバがあるubuntu 10.04
  • 両方の実行 openssh

回答:


12

入力または出力がまだ開いている限り、sshは接続を開いたままにします。これを解決するには、入力と出力が開いていないことを確認してください。

たとえばssh -n、出力を使用してリダイレクトします。

ssh -n me@example.com "nohup myscript.sh >/dev/null 2>&1 &"

myscript.sh出力を引き続き提供したいが、スクリプトが完了した後もsshセッションが終了する場合はどうなりますか?私の場合、スクリプト自体がnohupプロセスを開始してから戻ります。私はそれをssh -Tするのに役立つ印象を受けました。
Gauthier

@Gauthier次に、nohupなしでスクリプトを実行します。
マイケルハンプトン

私がやります。スクリプトは、nohupと&で他のコマンドを開始してから終了します。しかし、sshは戻りません。スクリプトで呼び出されたコマンドは、標準出力をファイルにリダイレクトします。ああ、しかしstderrとstdinではありません、それはなぜでしょうか?
Gauthier

そこにあります!入力と出力はリダイレクトする必要があります。
マイケルハンプトン

私が理解していないのは、実際にログインしてttyを取得した場合、nohup&コマンドを開始するスクリプトを開始すると、sshセッションからログアウトできることです。オープンな入力と出力があることに不満はありません。それはssh -t模倣すべきものではないですか?
Gauthier
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.