You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Monit配置:如何实现仅进程存在时检测内存超阈值终止进程

Monit 通用检测规则配置方案

问题原因

if exists AND 内存阈值判断触发语法错误的核心原因:Monit进程检测规则中,进程存在性是独立检测分支,不支持和内存、CPU这类资源占用条件做AND逻辑拼接。实际上资源占用检测逻辑本身仅在进程存活时执行,进程不存在时资源检测分支会自动跳过,不需要额外追加存在判断。

未运行someprocess的主机持续输出"process is not running"日志,是Monit针对不存在进程检查项的默认日志行为,单独配置进程不存在时的处理动作即可解决。

正确可用的配置规则

check process someprocess
    matching "someprocess"
    # 进程不存在时不触发告警、不输出进程不存在的提示日志
    if does not exist then noalert
    # 内存占用超阈值时终止进程
    if memory usage > 2% for 1 cycle then exec "/usr/bin/pkill -f someprocess"

配置说明

  • 规则完全兼容两类主机:没运行someprocess的主机会直接跳过资源检测,不会刷无关日志;运行了someprocess的主机会正常执行内存阈值检测,超限时自动执行杀进程逻辑
  • 原规则里的/usr/bin/kill someprocess是无效命令:kill命令仅接收PID作为参数,无法直接识别进程名,替换为pkill -f才能正确匹配进程名发送终止信号,如果需要强制终止可以改成/usr/bin/pkill -9 -f someprocess
  • 配置修改完成后,先执行monit -t做语法校验,确认无报错后重载Monit服务即可生效

内容的提问来源于stack exchange,提问作者NeverABreak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:30:54