sshを実行して切断すると、継続中の操作はどうなりますか?


10

mvコマンドを使用して、あるディレクトリを別のディレクトリに移動しています。

しかし、私は自分のコンピューターをシャットダウンすることを余儀なくされました。つまり、サーバーへの接続が失われました。

mvコマンドはどうなりますか?

注:再ログインした後、接続を閉じたときに移動されなかったことが確認されていても、すべてのファイルが適切に移動されていることがわかりました。mvは実行を続けたようです。

これは私がsteadfast.netクラウドサーバーのcentoshマシンにsshすることです。



1
ディレクトリが同じパーティションにある場合、ディレクトリを別のディレクトリに移動するのは「瞬時」です。また、ファイルごとにファイルを移動する場合でも、高速で実行できます。あなたは必ずそれが継続しなかった後に、あなたが(代わりに別のSIGHUP信号がいくつかの[コンピュータスケールで]時間がかかることが子プロセスに送られながら、仕上げの切断。
オリヴィエ・デュラック

回避策として、screenまたはtmux一度ログインしてから、仮想端末を起動します。仮想端末は、切断しても動作し続けます(つまり、後で再接続して、端末を元の状態と同じ状態で表示し、さらに間]
Olivier Dulac

回答:


19

mvとして開始された場合:

ssh host mv x y

次にmv、stdoutまたはstderr(エラーメッセージなど)に何かを書き込もうとすると、SIGPIPEを受け取り(そして死ぬ)。

次のようなインタラクティブセッションを開始した場合:

ssh host

mvそこにあるインタラクティブシェルから開始し、によって開始された疑似端末のマスター側sshdが終了すると(ssh終了時にTCP接続を閉じると)、疑似端末のスレーブ側に関連付けられたセッションのリーダー、リモートの対話型シェルで、SIGHUPシグナルを受信します(ハングアップ)。

その信号を受信すると、シェル(あなたが発行していない限りtrap '' HUP)通常は前方その信号、彼らが始めた仕事中のすべてのプロセスに、あなたがいない(と同様に、それを明示的に言われていない限りdisownたりと&|、いくつかのシェルで)。

他のプロセス(などmv)は、そのシグナルを受信すると、それを無視するように指示されていない限り(使用nohupするか、親が無視した場合を除いて)、通常は終了します。

あなたが発行した場合:

trap '' HUP

次に、それを継承した後に開始されたすべてのジョブはSIGHUPを無視します。

シェルは、切断時に送信されるSIGHUP信号で死ぬことはありませんが、stdinがなくなっているため、次のプロンプトで終了します。終了すると、一部のシェルはSIGHUPを(非公開の)ジョブに送信します。後に開始されたものはtrap '' HUPそれを無視し、他は死にます。

要するに、その場合、それが起こらないように事前の予防策をとっていない限り、あなたmvは死ぬでしょう。

次回から回避するためにtcshzshまたはを使用している場合bashは、マシンをシャットダウンする前に、を押しCtrl-Zて一時停止しmv、Enter bgを押してバックグラウンドで再開し、それdisown拒否します。

それとも、使用することができますscreentmux。SIGHUPが実行されると、これらはホストターミナルから切り離されますが、エミュレートするターミナルで実行されているアプリケーションはヘッドレスで実行され続けるので、後でセッションを別のターミナルに再接続して、進行状況を確認できますmv

または使用nohup mvするためにmvSIGHUPに免疫をし、その出力とエラーに行くしているnohup.outあなたは、後で確認することができますファイル。

今、私はあなたの特定のホスティングプロバイダについては知らないが、ときにいくつかと、sshインスタンスに、あなたはあそこシェルセッションを開始していないではなく、添付すでに開始されているセッションにあるコンソールへ、そしてあなたが終了するとき、あなたはそのセッションを終了するのではなく、単にそれから切り離すだけです。つまり、シェルはkillを取得しませんmv。その場合は、psそこから実行するとpid、2つの別々のsshセッションにわたってシェルに同じ結果が得られることがわかります。


つまり、mvは終了するということです。さて、注意事項をご確認ください。
user4951 2013

2
+1。未解決の回答(詳細と詳細については、何がいつ発生するかを説明するため)。
Olivier Dulac

あなたの回答に基づいて記事をまとめまし。うまくいけば、誰かがそれを参考にしてくれるでしょう。
x-yuri
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.