卡住进程超时
Timeout for a stuck process
我在 do ... while
中调用一个视频转换过程,循环处理一组文件。
大部分时间它都按预期工作,但偶尔该进程会挂在文件上并且在我终止它之前不会继续运行。 (所以它并不是没有响应 - 只是没用!)
它仍在发送到 stdout 和 stderr,在那里我可以看到它试图一遍又一遍地读取相同的索引。我还可以看到它没有将任何输出写入目标文件(因此它没有做任何有用的事情)。
我可以:
监控 stdout and/or stderr 是否有重复的项目,如果重复多次则退出进程;或
监听目标文件,超时后不存在则退出进程;或
如果在超时后未能完成,是否退出进程?
如果视频转换过程是您开发的,那么最好的解决方案是解决无限循环问题。从错误处理的角度来看,或者如果进程是第 3 方的,那么您可以将输出重定向到一个文件,然后定期检查该文件以获取日志中的特定错误消息,然后将其终止。如果进程预期在特定时间范围内处理文件,那么如果转换未在指定时间范围内完成,您可以终止进程。
我在 do ... while
中调用一个视频转换过程,循环处理一组文件。
大部分时间它都按预期工作,但偶尔该进程会挂在文件上并且在我终止它之前不会继续运行。 (所以它并不是没有响应 - 只是没用!)
它仍在发送到 stdout 和 stderr,在那里我可以看到它试图一遍又一遍地读取相同的索引。我还可以看到它没有将任何输出写入目标文件(因此它没有做任何有用的事情)。
我可以:
监控 stdout and/or stderr 是否有重复的项目,如果重复多次则退出进程;或
监听目标文件,超时后不存在则退出进程;或
如果在超时后未能完成,是否退出进程?
如果视频转换过程是您开发的,那么最好的解决方案是解决无限循环问题。从错误处理的角度来看,或者如果进程是第 3 方的,那么您可以将输出重定向到一个文件,然后定期检查该文件以获取日志中的特定错误消息,然后将其终止。如果进程预期在特定时间范围内处理文件,那么如果转换未在指定时间范围内完成,您可以终止进程。