cron 不起作用,但脚本起作用...知道是什么吗?

cron 不起作用,但脚本起作用...知道是什么吗?

我在网上查了一下,这可能是一个常见问题,但我不知道如何解决它,他们说的一切都不是我的情况......

cron 正在运行,我检查了一下,仍然没有日志文件(至少在 var/log 中没有),我正在使用 Debian 6,我的 .sh 运行良好,我手动尝试但在 cron 中不起作用......

这是我的 cron 代码(我使用 crontab -e 然后我重新启动 cron 服务,即使我认为这没有必要..)

14 12  * * * /root/mysqldump.sh > /root/MySQLdump.log

当时这只是我几分钟前做的一个测试...当我手动尝试时,mysqldump.sh 运行良好,但在 cron 上却不行...还有其他想法吗?

顺便问一下,2>&1 有什么作用?

提前致谢

编辑:

我启用了 cron 日志,现在我检查了我的日志文件,它是这样的

Feb 11 13:05:01 myserver /USR/SBIN/CRON[5652]: (root) CMD ("/home/dump/sqldump.sh")

但仅此而已,仅此而已……

答案1

通常脚本以特定用户身份运行但在以下用户下失败的原因cron是因为cron在受限环境下运行,特别是最小的PATH

您的脚本 - 以及您的crontab条目 - 需要引用具有完整路径的其他可执行文件/脚本,例如使用/usr/bin/mysqldump而不是仅仅mysqldump


编辑:根据您的意见,您应该将脚本更改为类似以下内容,即确保使用 和 的完整路径mysqldumpgzipdate

#!/bin/bash
DATE=`/bin/date +"db-%d-%m-%Y"`
/usr/bin/mysqldump -u user -ppassword mydb | /bin/gzip > /home/dump/$DATE.sql.gz

答案2

我认为是引用导致问题,请尝试以下操作

14 12  * * * "/root/mysqldump.sh > /root/MySQLdump.log"

2>&1 将 std 错误重定向到 std 输出

答案3

与大多数服务一样,cron 守护程序会将日志记录到 syslog 中,因此您可以在 中找到日志/var/log/syslog。作业运行的日志消息如下所示:

Feb 11 11:09:01 mamma CRON[30555]: (mgorven) CMD (cat /proc/acpi/battery/BAT0/info > /tmp/BAT0-info)

相关内容