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

如何让Monit根据Unix CPU负载阈值仅执行对应脚本?

解决Monit CPU负载阈值触发单一脚本的问题

你的问题根源在于Monit的每个if条件是独立判断的——当CPU负载超过95%时,它同时满足>50%、>75%、>95%三个条件,所以三个脚本会被同时执行。要实现“仅触发对应阈值的单个脚本”,核心是把阈值设置为互斥的区间,让每个条件只在特定范围内生效。

修改后的Monit配置

check system $HOST
  if cpu > 50% and cpu <= 75% then exec "/path/to/one.sh"
  if cpu > 75% and cpu <= 95% then exec "/path/to/two.sh"
  if cpu > 95% then exec "/path/to/three.sh"

配置解释

  • 第一个条件:当CPU负载在50%到75%之间(不含50%,含75%)时,仅执行one.sh
  • 第二个条件:当CPU负载在75%到95%之间(不含75%,含95%)时,仅执行two.sh
  • 第三个条件:当CPU负载**超过95%**时,仅执行three.sh

这样三个区间完全互斥,不会出现多个脚本同时触发的情况。

额外注意事项

  • 务必给脚本使用绝对路径,避免Monit因环境变量问题找不到脚本
  • 确保脚本拥有可执行权限:chmod +x /path/to/one.sh /path/to/two.sh /path/to/three.sh
  • 修改配置后,需要重启Monit让配置生效:monit reload
  • 如果担心同个阈值下脚本被重复触发,可以在脚本内添加锁机制(比如用flock),避免短时间内多次执行同一脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:16:58