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

Ubuntu下Cron调度Ping检测脚本失效问题求助

解决Cron无法执行ping监控脚本的问题

问题根源

手动运行脚本正常,但Cron执行失效,本质是Cron的执行环境和你手动操作的Shell环境完全不同——Cron的PATH更窄、工作目录默认是用户家目录,很多系统命令的路径需要显式指定。

一步步修复

1. 统一脚本解释器

你的脚本开头声明用bash,但Cron任务里用/bin/sh调用,虽然Ubuntu中sh兼容大部分bash语法,但直接用bash执行更稳妥:
修改Cron规则为:

* * * * * /bin/bash /home/username/Documents/ping.sh

2. 指定Python3的绝对路径

Cron的默认PATH不包含用户环境里的Python路径,直接写python3可能找不到。先查绝对路径:

which python3

比如得到/usr/bin/python3,然后在脚本里把python3换成这个绝对路径。

3. 修复ping.py的路径问题

脚本里直接跑ping.py,但Cron执行时的工作目录是/home/username,不是脚本所在的Documents文件夹,所以找不到文件。两种解决方式:

  • 用ping.py的绝对路径:
    /usr/bin/python3 /home/username/Documents/ping.py
    
  • 先切换到脚本目录再执行:
    cd /home/username/Documents && /usr/bin/python3 ping.py
    

4. 简化脚本的判断逻辑(可选但更高效)

原脚本用反引号的写法可以简化,直接用grep的退出码判断:

#!/bin/bash

# 直接判断ping结果里是否包含丢包信息
if ping -c 1 google.com | grep -q "0 received, 100% packet loss"; then
  /usr/bin/python3 /home/username/Documents/ping.py
fi

这样省去了变量存储,更简洁。

5. 查日志找问题(如果还不行)

查看Cron的执行日志,能直接看到错误原因:

grep CRON /var/log/syslog

比如日志里显示command not found就是路径问题,No such file or directory就是文件路径错了。

验证修复

可以在ping.py里加一行日志输出,确认脚本是否被执行:

# 在ping.py开头加
from datetime import datetime
with open("/home/username/Documents/ping_log.txt", "a") as f:
    f.write(f"监控触发通知:{datetime.now()}\n")

等Cron执行后,查看这个日志文件有没有新增内容。


内容的提问来源于stack exchange,提问作者Tomas Melo Peralta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:01:30