1

ssh経由でいくつかのファイルを転送するスクリプトがあります。私は通常、スクリプトを開始し、問題なく実行されていることを確認したら、CTRL-Z を使用して停止し、bg.

> ./download-script.sh
Downloading...
Got file foobar.txt
Got file baz.txt
Downloading bash.txt (42%)
[2]+  Stopped      download-script.sh
> bg
[1]+ download-script.sh &
>

これはどのように安全ですか?ファイルを送信するサーバーは、私のプロセスがオンラインに戻るのを待つことを知らないようですよね?

1 時間待ってからバックグラウンドでスクリプトを再開した場合、中断したところから続行されるのでしょうか?

私の例では ssh ファイル転送を使用していますが、これは、スクリプトがほとんどのリソースと対話している場合にも問題になります。

4

1 に答える 1

3

I/O バッファは、少しの遅延に耐えるのに役立ちます (つまり、スクリプト/コマンドをせいぜい数秒だけ中断しても、Barf は発生しません。ただし、数秒を超えると、おそらく他の問題が発生すると思います:発信元と宛先の間の TCP/UDP タイムアウト? I/O タイムアウト? (例: パスワードを入力するには長すぎるなど)

「ローカル」のものだけがあり、使用するコマンドにタイムアウトが組み込まれていない場合: たとえば、次の場合:

tar cvf something.tar /path/to/something 

そして、ctrl-zそれからbg(起動してバックグラウンドに送信する) またはfg(起動してフォアグラウンドに送信する) : 長時間待っても動作します。

ただし、それまでの間、tar されているファイルの 1 つが変更される可能性が高くなります...

または、シェルに TIMEOUT/TMOUT があり、前に停止する可能性があります。

または(その他の理由、実際には:電源オフ、猫がCTRL + dを踏みつけてシェルを終了するなど)

iow: 何かが「高速」であることに依存しない限り、できます。

于 2013-03-28T17:52:16.543 に答える