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

PM2运行清理旧文件的Bash脚本报错且无日志,如何排查?

排查PM2运行清理脚本报错无日志的步骤
  • 检查进程基础配置与日志状态
    执行pm2 show 8查看进程详情,重点确认:

    • 脚本路径是否正确,有无拼写错误
    • 日志文件(error log/out log)的路径及权限,确保PM2运行用户对日志路径有读写权限
    • 确认是否存在disable_logs: true这类禁用日志的配置
  • 手动验证脚本有效性
    切换到PM2运行该进程的用户,直接执行脚本:

    /path/to/your/cleanup_script.sh
    

    观察是否有报错(比如权限不足、目录不存在)。如果无直观输出,可临时修改脚本添加调试和日志重定向:

    #!/usr/bin/bash
    set -x
    # 记录正常输出和错误信息到临时文件
    find /home/collector/cloudtrail/ -mtime +3 -exec rm {} + >> /tmp/cleanup_out.log 2>> /tmp/cleanup_err.log
    find /home/collector/stackdriver/ -mtime +3 -exec rm {} + >> /tmp/cleanup_out.log 2>> /tmp/cleanup_err.log
    

    执行后查看/tmp/cleanup_out.log和/tmp/cleanup_err.log定位问题。

  • 检查PM2进程运行模式适配性
    你的脚本是一次性执行的清理任务,而PM2默认守护长期运行的进程。脚本执行完成后会自动退出,PM2会判定进程崩溃并尝试重启,这可能是报错的根源:

    • 若需定期执行,改用PM2的定时任务模式:
      pm2 start your_script.sh --cron "0 0 * * *"  # 每天凌晨执行一次
      
    • 若仅需单次测试,禁用自动重启:
      pm2 start your_script.sh --no-autorestart
      
      执行后用pm2 status查看进程状态,再检查日志。
  • 查看系统级日志
    若PM2自身日志无记录,检查系统日志:

    • 若PM2以systemd服务运行:journalctl -u pm2-<your-username>.service
    • Debian/Ubuntu:查看/var/log/syslog
    • CentOS/RHEL:查看/var/log/messages
      从中查找PM2启动进程时的系统级错误(如权限不足、资源限制)。
  • 验证PM2日志功能是否正常
    临时创建测试脚本test_log.sh:

    #!/usr/bin/bash
    echo "正常输出测试"
    sleep 2
    echo "错误输出测试" >&2
    

    执行pm2 start test_log.sh,再用pm2 logs <test-process-id>查看日志,确认PM2日志系统本身是否工作正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:23:55