web-dev-qa-db-ja.com

SSHリモートコマンドの実行は、実行が終了しても切断せずに残りますか?

PBXでAsterisk/Elastixサービスを再起動するスクリプト/コマンドを作成しようとしています。このスクリプトは基本的に、Ubuntu 14.04LTSから実行される自動ログイン公開キーを使用した単純なコマンドを使用しています。

コマンドスクリプトは次のとおりです。

ssh user@iphost 'service asterisk restart'

ただし、コマンドが終了してサービスが再開された後、sshはそのままで、 ctrlc その勃発。

私の質問は、コマンドの完了後にセッションを終了するにはどうすればよいですか?

1
user1289947

Stdin、stdout、stderrを/ dev/nullにリダイレクトしてみてください。説明については、 https://serverfault.com/questions/36419/using-ssh-to-remotely-start-a-process を参照してください。

1
user100464

オプション-t(端末)sshコマンドでも問題を解決します(コマンド出力が必要なものであれば、stdoutをリダイレクトするよりも優れています)。

ssh -t remoteip command 
0
Asain Kujovic

「hereドキュメント」を使用してみてください

ssh user@iphos << endexe
   service asterisk restart
   exit
endexe

うまくいくはずです。

0
YoMismo

実行したらすぐにバックグラウンドで実行できます。

ssh user@iphost 'service asterisk restart &'

xinitベースのアップスタートサービスで同様の問題が発生し、ステージを占有し、手動で終了する必要があります(アップスタートジョブに害はありません)が、ええ、&最後に、それはバックグラウンドにそれを強制する必要があります。

それがあなたにgypを与えるなら、 他の多くのオプション のようなものがあります:

ssh user@iphost 'setsid service asterisk restart'
0
Oli

代わりに、次のコマンドのいずれかを使用できます。

  • サービスを再起動して終了します。

    ssh user@iphost 'service asterisk restart; exit'
    
  • サービスを再起動し、成功すると終了します。

    ssh root@iphost 'service asterisk restart && exit'
    
0