Capistranoタスク(バックグラウンドでデーモンを起動しようとした)がハングアップした理由を理解した後、&&
をssh上のbashで使用すると、バックグラウンド。私はbash 4.1.5と4.2.20で試しました。bash &&演算子がssh上のバックグラウンドを防止する
以下はbashで(すなわち終了するsleep
のを待つ)ハングします:
ssh localhost "cd /tmp && nohup sleep 10 >/dev/null 2>&1 &"
以下はしません:
ssh localhost "cd /tmp ; nohup sleep 10 >/dev/null 2>&1 &"
どちらこれは以下となります。
cd /tmp && nohup sleep 10 >/dev/null 2>&1 &
は、 zshとdashの両方とも、&&
に関係なく、すべてのケースでバックグラウンドで実行されますとssh。これはbashやバグの通常の/期待される動作ですか?
私は正確にあなたの質問への答えを知っているが、意志はありませんリモートエンドでBashを使用してSSHを使用しているときに時折同じような不具合が発生したとします。問題がBash固有であるかどうかはわかりませんが、 'nohup'コマンドではなく、Bashシェルの' disown'組み込み関数を使用することで、時々運が良くなっています。これに興味があるなら、 'help disown | Bashを実行している間に「少ない」。そして、あなたが一般的な解決策を知りたければ、ここに投稿してください。私は読むことに興味があるはずです。 – thb
私は実際に 'disown'、' nohup'とリダイレクションのさまざまな組み合わせで無益にしようとしました。 '&&'はバックグラウンドを常に禁止します。私はサブシェルで2つのコマンドをラップすることで逃げることができましたが、それは本当に同じことではありません。 – Hinrik
コマンドは私にとってはうまくいくようです。ハングアップはどういう意味ですか? 'cd'は長い時間がかかりますか?これは、リモートサーバーの問題である可能性があります。あまりにも多くの負荷。 – suvayu