卡住流程超时

时间:2016-02-07 14:41:38

标签: bash timeout terminate

我正在调用do ... while中的视频转换过程,该过程循环播放一组文件。

大部分时间它按预期工作,但偶尔会在文件上挂起进程并且在我杀死它之前不会继续运行。 (所以它没有反应迟钝 - 只是没用!)

它仍然发送到stdout和stderr,在那里我可以看到它正在尝试反复读取相同的索引。我还可以看到它没有将任何输出写入目标文件(因此它没有做任何有用的事情)。

我可以:

  • 监视stdout和/或stderr重复项目,如果多次执行,则退出该进程;或

  • 监视目标文件,如果超时后不存在,则退出进程;或

  • 如果超时后无法完成,请退出该流程吗?

1 个答案:

答案 0 :(得分:1)

如果视频转换过程是由您开发的,那么最好的解决方案就是修复无限循环问题。从错误处理的角度来看,或者如果进程是第三方进程,那么您可以将输出重定向到文件,然后定期从日志中检查文件中的特定错误消息,然后将其终止。如果希望进程在特定时间范围内处理文件,那么如果转换未在指定的时间范围内完成,则可以终止该进程。