我有一个 matlab 处理脚本,位于在 linux 上运行的长处理管道的中间。
matlabN
脚本D_i (i=1,2,...,N)
通过parfor
. 通常,处理整个数据集大约需要 2 小时(在 8 个内核上)。
不幸的是,有时,matlab 子进程之一看起来会随机崩溃。这使得工作无法完成(并且管道无法完成)。
我确信这不依赖于数据,就像我专门重新处理D_i
进程崩溃的数据一样,它的执行没有问题。此外,到目前为止,我已经处理了数千个提到的数据集。
我现在如何处理这个问题(......手动......):
启动 matlab 作业后,我会定期检查机器上的进程列表(通过简单的top
);每当我在工作两个小时后有一个 matlab 进程还活着时,我就确定它已经崩溃了。然后我简单地杀死它并处理尚未分析的数据集部分。
问题:
我正在寻找有关如何使所有运行的 matlab 进程超时并在它们存活超过例如 2 小时 CPU 时杀死它们的建议。