运行带有超时和重定向输出的脚本,然后对输出执行一些操作



我试图保存分析一个可能不会终止的脚本的输出。为了做到这一点,我将输出重定向到一个文件,并运行该脚本,并将超时时间与analyze命令(在本例中为cat)一起运行。

timeout 24h php phpscript.php > script.out && cat script.out

但这似乎不起作用,输出被写入文件,但从未打印。我已经尝试将timeout命令包装在括号中,像这样;

(timeout 24h php phpscript.php > script.out) && cat script.out

没有任何结果。在我看来,这应该是微不足道的,但我的bashfu很弱。

请帮

问题原来是退出代码。

超时返回124作为退出码,而&&复合只在第一个参数的退出码为0

时计算第二个参数

解决方案:

timeout 24h php phpscript.php > script.out || cat script.out

不,这个问题不是来自退出代码,因为同样的情况也发生在--preserve-status开关上。

我认为这是由于在stdout上启用了输出缓冲,超时在刷新子进程之前切断了子进程。所以你应该可以用stdbuf

禁用它

你的解决方案是:

timeout 24h stdbuf -o0 php phpscript.php > script.out && cat script.out

相关内容

  • 没有找到相关文章

最新更新