我在bash脚本的末尾有这一行:
wget -q $URL -Y off
其中URL
是 LIVE txt文件的路径,该文件包含我的bash脚本的控制台输出。
澄清:
此txt文件会在整个过程中不断更新,因为它存储了控制台输出。我的shell脚本包含一些“重”程序,因此控制台输出非常冗长,并且txt文件需要一些时间来生成(可能延迟3~5秒)。
问题:有时我会得到不完整的txt文件,它只包含最终txt文件的一小部分。 (它应该在wget
命令之前获得所有内容)而且有趣的是,我下载的大多数不完整的txt文件都停留在第9999行。我不知道这是否是限制,但它似乎如果控制台输出低于5k行,则没问题。
问题:有没有办法让wget
等待特定时间?
P.S。我知道-T
有超时选项wget
,默认值为900秒。但我的问题与缓慢的连接无关,而是生成文件的延迟。
答案 0 :(得分:0)
如果此wget
语句正在运行作为生成输出的脚本的一部分,那么您可能遇到某种输出缓冲问题...即,因为脚本尚未退出,输出尚未刷新。
你如何重定向输出?一种方法是将子wget
语句以外的所有内容包装在子shell中,并重定向的输出:
#!/bin/sh
(
a bunch
of commands
) > output 2>&1
wget -q $URL ...
这确保其他命令在wget
运行时已完成且包含的shell已退出。