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 &
>

这怎么安全?似乎发送文件的服务器不知道等待我的进程重新联机,是吗?

如果我等了一个小时然后在后台恢复脚本,它会从中断的地方继续吗?

我的示例使用 ssh 文件传输,但是当我的脚本与大多数任何资源交互时,这也成为我关心的问题。

4

1 回答 1

3

I/O 缓冲区将帮助它承受一点延迟(即,如果您最多暂停脚本/命令几秒钟,它不会出错。但超过几秒钟,我认为您可能会遇到其他问题:起点和终点之间的 TCP/UDP 超时?I/O 超时?(例如:输入密码太长等)

如果您只有“本地”的东西,并且您使用的命令没有内置超时:例如,如果您这样做:

tar cvf something.tar /path/to/something 

然后ctrl-z它,然后bg(唤醒并发送到后台)或fg(唤醒并发送到前台):即使您等待很长时间,它也会起作用。

然而,与此同时,您有更多机会修改被 tar-ed 的文件之一......

或者你的 shell 可能有一个 TIMEOUT/TMOUT 使它之前停止。

或者(任何其他原因,真的:关闭电源,你的猫踩着 CTRL+d 退出 shell 等等)

iow:你可以,除非某些东西依赖于它“快速”。

于 2013-03-28T17:52:16.543 回答