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