我在我的用户上使用 Crontab 运行了很多 curl 脚本,它们运行良好,其中 40 个都有效。
但是我使用命令“sudo crontab -e”在根目录的 Crontab 中保存的脚本没有运行,它们在大约 1 个月前停止工作,并且运行良好超过 2 年。
尝试与服务器人员交谈,但他们都不知道哪里出了问题。顺便说一句,我不是服务器专家,我可以遵循指南,但仅此而已 :)
我尝试过:重新启动 cron 服务、“安装新的 crontab”、使用 root 用户运行普通 crontab 中的脚本、重新启动服务器、删除文件中的所有内容、删除 MAILTO。
所有脚本只需手动运行即可工作。
这是不起作用的罚款:
邮箱=””
2 3 * * * "/usr/local/scripts/backup-mysql.sh"
25 3 * * * "/usr/local/scripts/backup-prestashop.sh"
答案1
最有帮助的应该是获取错误信息。
2 3 * * * { date; bash -v "/usr/local/scripts/backup-mysql.sh"; date; } &>/tmp/cron-backup-mysql.log
25 3 * * * { date; bash -v "/usr/local/scripts/backup-prestashop.sh"; date; } &>/tmp/cron-backup-prestashop.log
输出记录在/tmp/cron-backup-mysql.log
和中/tmp/cron-backup-prestashop.log
。 bash -v
输出读取的脚本行。
您可以检查文件的所有者以确保它以 root 身份运行。然后读取文件,您可以获得开始和结束时间以检查运行是否完成以及持续时间是否符合您的预期。
如果脚本现在正确运行,问题可能在于隐式调用的 shell(bash -v
从 crontab 中删除并添加echo SHELL = $SHELL
到脚本中)或脚本缺少执行权限(chmod +x
)。
如果脚本崩溃,bash -v
将帮助您找到错误。您可以通过替换来显示更多详细信息-v
,-x
但这会在评估每个表达式时淹没输出。