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

Bash脚本手动可运行但Crontab无法执行,请求排查根源

Cron脚本运行失败排查方案

1. 修复脚本路径错误

从日志和文件列表能明确看到:

  • Cron命令里写的脚本路径是/usr/bin/local/send_my_ip.sh
  • 实际脚本存放路径是/usr/local/bin/send_my_ip.sh
    路径层级写反了,这是最直接的执行失败原因,需修正Cron命令里的路径为正确的/usr/local/bin/send_my_ip.sh。

2. 关闭错误输出屏蔽,保留排查日志

当前Cron命令末尾加了>/dev/null 2>&1,把所有输出(包括错误信息)全部丢弃,无法定位脚本执行时的具体问题。建议先修改为:

* * * * * /bin/bash /usr/local/bin/send_my_ip.sh >> /home/admin/cron_full.log 2>&1

这样所有执行输出和错误都会写入/home/admin/cron_full.log,方便后续排查。

3. 替换脚本中的相对路径为绝对路径

Cron执行时的环境与用户交互式shell不同,~的解析可能不稳定,需把脚本里的相对路径全部换成绝对路径:

#!/bin/bash
# 若非必须加载bashrc,建议注释掉此行——非交互环境加载bashrc易引发未知错误
# . /home/admin/.bashrc

MY_IP=$(/usr/bin/wget -qO- eth0.me)
MY_IP_LAST=$(cat /home/admin/my_ip.txt)
echo "$MY_IP" >> /home/admin/log_cron.log
  • 将. ~/.bashrc改为. /home/admin/.bashrc,或直接注释(若脚本不需要bashrc中的环境变量)
  • 将~/my_ip.txt改为/home/admin/my_ip.txt
  • wget使用绝对路径/usr/bin/wget,确保Cron能准确定位命令

4. 检查脚本依赖文件的权限

确认/home/admin/my_ip.txt存在且admin用户拥有读取权限,若文件不存在,先手动创建:

touch /home/admin/my_ip.txt
chown admin:admin /home/admin/my_ip.txt

5. 模拟Cron环境验证脚本

手动用Cron的执行环境运行脚本,排查是否为环境差异导致的问题:

/bin/bash -c "/usr/local/bin/send_my_ip.sh"

若手动执行也报错,直接根据错误信息修复;若手动执行正常,再检查Cron服务状态或配置是否有遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:37:38