当 ssh 管道断了,wget 会发生什么?

当 ssh 管道断了,wget 会发生什么?

假设我通过 SSH 在服务器上使用 wget 下载文件,由于某些互联网连接问题,ssh 将我踢出,提示“管道损坏”。wget 下载会怎样?它会停止还是会继续?如果要继续,如何返回查看下载过程?

答案1

它可能已经收到了所有数据,但可能只有少数数据包在特殊情况下仍在传输中。您不应再从服务器接收任何数据。

Wget 确实支持恢复下载,但这取决于远程服务器是否接受重启,而并非所有服务器都能接受重启,尤其是对于 SSL,因为加密使任务变得更加复杂。

正如@Aftnix 所建议的,尝试重新运行该命令,-C看看是否可以恢复下载。

也可能是请求很早就失败了?在这种情况下,可能失败的请求没有检索到任何有用的信息。

更新:啊,我刚刚意识到你被踢出了 SSH!不是 wget 命令!不过结果几乎是一样的。一旦 SSH 连接断开,远程 wget 命令就会从内存中终止。如果 wget 检索到任何有用的东西,它将位于你运行命令的文件夹中,除非你将输出重定向到其他地方。

当处理不可靠的 SSH 链接时,您通常应该使用,screen以便链接的终止不会破坏您的命令。

答案2

假设这就是你的意思:

  1. 您已通过 SSH 连接到远程机器。
  2. 您使用 开始下载wget
  3. 您的 SSH 连接因某种原因中断,但远程机器仍与下载服务器正常连接。

在这种情况下,大多数时候wget都会继续运行。您可以通过定期从另一台计算机监视正在下载的文件的文件大小来验证这一点。此外,如果您通过新的 SSH 会话重新连接到远程计算机,则可以wget -c下载同一个文件。这将导致两个wget实例下载同一个文件 - 不好。本质上,旧的实例wget将继续运行,直到下载完成或您通过killall wget从新的 SSH 会话运行明确终止它。

相关内容