ssh
リモートマシン、cd
特定のディレクトリにログインしてからデーモンを開始するために使用するスクリプトがあります。元のスクリプトは次のようになります。
ssh server "cd /tmp/path ; nohup java server 0</dev/null 1>server_stdout 2>server_stderr &"
このスクリプトは正常に動作するようです。ただし、ユーザーが間違ったパスを入力してcd
失敗した場合には堅牢ではありません。が原因で、このコマンドは失敗してもコマンド;
を実行しようとします。nohup
cd
明らかな修正は機能しません:
ssh server "cd /tmp/path && nohup java server 0</dev/null 1>server_stdout 2>server_stderr &"
つまり、サーバーが停止するまで SSH コマンドは戻りません。の前nohup
ではcd
なく の前に置いてもjava
うまくいきませんでした。
誰でもこれを修正するのを手伝ってもらえますか? このソリューションが機能しない理由を説明できますか? ありがとう!
編集: cbuckley はsh -c
、私が派生した の使用を提案しています:
ssh server "nohup sh -c 'cd /tmp/path && java server 0</dev/null 1>master_stdout 2>master_stderr' 2>/dev/null 1>/dev/null &"
ただし、現在、終了コードは常に失敗し0
たときです。cd
一方、ssh server cd /failed/path
そうすると、実際の終了コードが得られます。提案?