我正在寻找一种方法来杀死所有具有给定名称的进程,这些进程已经运行了超过X个时间。我生成了这个特定可执行文件的许多实例,有时它会陷入糟糕的状态并永远运行,占用了大量的cpu。
我已经在使用monit了,但是我不知道如何在没有pid文件的情况下检查进程。规则是这样的:
kill all processes named xxxx that have a running time greater than 2 minutes你怎么用单元组来表达这个?
发布于 2011-06-30 03:12:25
在monit中,您可以对没有PID的进程使用匹配字符串。使用名为"myprocessname“的进程的示例,
check process myprocessname
matching "myprocessname"
start program = "/etc/init.d/myproccessname start"
stop program = "/usr/bin/killall myprocessname"
if cpu usage > 95% for 10 cycles then restart也许,如果您检查CPU负载是否处于某一水平(每个监视周期为30秒),然后重新启动或终止,这可能是一个选项。或者您可以在与进程相关的文件上使用monit时间戳测试。
发布于 2013-02-26 20:22:41
发布于 2012-05-29 03:06:54
您可以将它作为exec语句处理为monit。
if [[ "$(uname)" = "Linux" ]];then killall --older-than 2m someprocessname;fihttps://serverfault.com/questions/270316
复制相似问题