PBXでAsterisk/Elastixサービスを再起動するスクリプト/コマンドを作成しようとしています。このスクリプトは基本的に、Ubuntu 14.04LTSから実行される自動ログイン公開キーを使用した単純なコマンドを使用しています。
コマンドスクリプトは次のとおりです。
ssh user@iphost 'service asterisk restart'
ただし、コマンドが終了してサービスが再開された後、sshはそのままで、 ctrlc その勃発。
私の質問は、コマンドの完了後にセッションを終了するにはどうすればよいですか?
Stdin、stdout、stderrを/ dev/nullにリダイレクトしてみてください。説明については、 https://serverfault.com/questions/36419/using-ssh-to-remotely-start-a-process を参照してください。
オプション-t
(端末)sshコマンドでも問題を解決します(コマンド出力が必要なものであれば、stdoutをリダイレクトするよりも優れています)。
ssh -t remoteip command
「hereドキュメント」を使用してみてください
ssh user@iphos << endexe
service asterisk restart
exit
endexe
うまくいくはずです。
実行したらすぐにバックグラウンドで実行できます。
ssh user@iphost 'service asterisk restart &'
xinit
ベースのアップスタートサービスで同様の問題が発生し、ステージを占有し、手動で終了する必要があります(アップスタートジョブに害はありません)が、ええ、&
最後に、それはバックグラウンドにそれを強制する必要があります。
それがあなたにgypを与えるなら、 他の多くのオプション のようなものがあります:
ssh user@iphost 'setsid service asterisk restart'
代わりに、次のコマンドのいずれかを使用できます。
サービスを再起動して終了します。
ssh user@iphost 'service asterisk restart; exit'
サービスを再起動し、成功すると終了します。
ssh root@iphost 'service asterisk restart && exit'