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

手动运行正常的Shell脚本无法通过cron执行,请求排查帮助

手动运行正常的Shell脚本无法通过cron执行,请求排查帮助

我遇到了一个棘手的问题:通过sudo crontab -e配置的root定时任务,对应的备份验证脚本手动执行完全正常,但cron自动执行后,关键步骤却没生效,麻烦大家帮忙排查一下问题所在。

我的crontab配置:

# m h  dom mon dow   command
40 4 * * * /bin/bash /usr/bin/verify-miab-backup.sh

对应脚本内容(/usr/bin/verify-miab-backup.sh):

#!/bin/bash

echo `date` > /home/mythbuntu/last_verify_miab_run.log

echo `id -u -n` >> /home/mythbuntu/last_verify_miab_run.log

export PASSPHRASE=$(cat /dozer/eandb/miab_22-04/secret_key.txt)

duplicity verify --log-file=/var/log/duplicity_backblaze_verify.log file:///dozer/eandb/miab_backblaze_backups/ /dev/null && echo "miab_last_verify_time_seconds `date +"%s"`" > /etc/grafana-text-file-collectors/miab_verify.prom

目前排查到的现象:

  • 从/home/mythbuntu/last_verify_miab_run.log的内容来看,cron确实执行了脚本,且是以root身份运行的:
Mon 10 Apr 04:40:01 BST 2023
root
  • 但/etc/grafana-text-file-collectors/miab_verify.prom里的时间戳还是我上周日手动运行的结果,完全没有更新:
miab_last_verify_time_seconds 1681077406
  • 手动执行sudo verify-miab-backup.sh时,所有流程都正常:日志会更新最新时间,prom文件也会写入当前的时间戳,完全符合预期。

我已经尝试过的排查方向:

  • 脚本开头添加了#!/bin/bash,且crontab里也明确指定用/bin/bash运行脚本,避免shell兼容问题
  • 脚本和涉及的命令都使用了绝对路径,参考过相关的排查建议
  • 查阅过几个常见的「cron脚本失效」问题的帖子,比如环境变量、路径问题,但没找到匹配我情况的点

我怀疑是权限或者cron环境下变量使用的问题,但实在找不到具体出错的地方,有没有大佬能给点思路?

备注:内容来源于stack exchange,提问作者Aaron Whitehouse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:40:04