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

Monit中exec指令触发后无执行效果问题排查求助

Monit exec指令不执行问题排查与解决方案

可能原因及对应解决步骤

1. 脚本或目录权限不足

Monit默认以root或monit用户运行,若脚本无执行权限、Monit用户无读取/执行脚本的权限,会导致执行失败。

  • 验证:执行ls -l /home/ubuntu/bot/run_shell.sh,确认权限包含rx(比如755或700);执行ps aux | grep monit查看Monit运行用户。
  • 解决:
    • 给脚本加执行权限:chmod +x /home/ubuntu/bot/run_shell.sh
    • 若Monit以普通用户运行,调整目录权限:chown -R monit:monit /home/ubuntu/bot/(替换monit为实际运行用户)

2. 环境变量差异

手动执行的环境变量(如PATH)和Monit运行时的环境不一致,会导致脚本内命令找不到。

  • 验证:在脚本开头添加环境变量输出:
    #!/usr/bin/env bash
    env > /home/ubuntu/bot/monit_env.log
    
    触发exec后,对比monit_env.log和手动执行env > manual_env.log的内容,找出差异。
  • 解决:脚本内所有命令使用绝对路径(比如/bin/echo而非echo),或在脚本开头手动设置必要环境变量(如export PATH=/usr/bin:/bin:$PATH)。

3. 执行上下文与输出问题

Monit执行exec时无交互式终端,标准输出/错误默认被丢弃或重定向到Monit日志,导致看起来没执行;且Monit默认不等待脚本执行完成。

  • 验证:修改脚本写入执行日志:
    #!/usr/bin/env bash
    echo "[$(date)] 脚本启动" >> /home/ubuntu/bot/script_exec.log 2>&1
    /usr/bin/python3.11 /home/ubuntu/bot/my_bot.py >> /home/ubuntu/bot/script_exec.log 2>&1
    echo "[$(date)] 脚本结束" >> /home/ubuntu/bot/script_exec.log 2>&1
    
    触发exec后查看script_exec.log,确认是否有内容。
  • 解决:在Monit配置中指定以手动执行的用户运行脚本,消除权限/环境差异:
    check host all with address google.com
    group test
    if failed url https://google.com with content = 'nothing' for 2 cycles
    then exec "/home/ubuntu/bot/run_shell.sh" as uid ubuntu gid ubuntu
    

4. 安全模块限制

Ubuntu默认启用的AppArmor可能限制Monit执行外部脚本。

  • 验证:临时关闭AppArmor测试:sudo systemctl stop apparmor,重新加载Monitsudo monit reload后触发exec,看是否正常执行。
  • 解决:若关闭后正常,修改Monit的AppArmor配置文件(一般在/etc/apparmor.d/目录),添加脚本路径的允许规则,例如在对应文件中增加:
    /home/ubuntu/bot/run_shell.sh r,
    /home/ubuntu/bot/run_shell.sh x,
    

5. 配置语法或周期问题

  • 验证:执行monit -t检查配置语法,若输出Control file syntax OK则无语法错误;检查/etc/monit/monitrc中的set daemon参数,确认循环周期(比如set daemon 30表示每30秒检查一次),确保for 2 cycles的触发时间符合预期。
  • 解决:修复语法错误,调整周期参数至合理范围。

快速排查流程

  1. 给脚本添加日志输出,确认是否真的未执行;
  2. 检查脚本及目录的权限、Monit运行用户的权限;
  3. 对比手动与Monit的环境变量差异;
  4. 尝试指定用户执行脚本;
  5. 排查安全模块(AppArmor)的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:20:13