结合超时和 cpulimit

结合超时和 cpulimit

我遇到过一种情况,即在特定情况下挂起或运行时间过长的进程应该被终止。另外,我不希望该进程占用 100% 的 CPU 时间。我在想我应该结合cpulimittimeout

我可以让每个命令单独工作,但不能一起工作:

cpulimit -l 20 -- /usr/lib/libreoffice/program/soffice.bin --headless --convert-to pdf broken.docx

timeout -k 6 -s 15 6s /usr/lib/libreoffice/program/soffice.bin --headless --convert-to pdf broken.docx

我想做这样的事:

cpulimit -l 20 -- | timeout -k 6 -s 15 6s /usr/lib/libreoffice/program/soffice.bin --headless --convert-to pdf broken.docx

答案1

您可以尝试将该timeout命令作为参数运行cpulimit

cpulimit -l 20 -- timeout -k 6 -s 15 6s /usr/lib/libreoffice/program/soffice.bin --headless --convert-to pdf broken.docx

请注意,这与您的上一个示例完全相同,但没有管道|(管道将第一个进程的输出与第二个进程的输入链接在一起,这不是您想要的)。

答案2

我最终改用了nicewith。and组合timeout的一个问题是,它产生了多个进程,但父进程却没有受到影响。cpulimittimeoutsoffice.bin

这解决了我的问题。

如果没有其他进程在运行,则还nice可以让该进程使用 100% 的 CPU,而不是对资源进行硬性限制。

nice timeout -k 5 6s /usr/lib/libreoffice/program/soffice.bin --headless --convert-to pdf broken.docx

相关内容