我有以下cron
工作:
* * * * * /home/db_backups/test.sh
它运行良好并且每分钟执行一次。如果我检查sudo grep \(CRON\) /var/log/syslog
我得到以下信息:
Jun 23 11:30:01 analytics CRON[9301]: (CRON) info (No MTA installed, discarding output)
但是,如果我将可执行文件更改为inreadobase_backup.sh
:
* * * * * /home/db_backups/inreadobase_backup.sh
脚本未运行 - 我在日志中看不到任何记录。可执行文件如果单独运行则可以毫无错误地完成工作。这是文件的内容:
sudo mysqldump -h example.com -u username -ppassword dbname | gzip > db.zip
这两个可执行文件都具有授予每个人的执行权限。我应该在哪里查看以查明问题?
编辑
sudo crontab -e
如果我添加到以下行,该作业将运行并成功创建备份:
*/5 * * * * mysqldump -h example.com -u username -ppassword dbname | gzip > db.zip
但是,如果我将执行行移动mysqldump... db.zip
到inreadobase_backup.sh
文件并为作业指定它:
*/5 * * * * /home/db_backups/inreadobase_backup.sh
该作业不会创建备份。我不知道如何检查它是否运行以及输出什么错误(如果有)。如果我只是/home/db_backups/inreadobase_backup.sh
在命令行中执行,则会创建备份。该文件包含的唯一行是:
mysqldump -h example.com -u username -ppassword dbname | gzip > db.zip
我假设您已将其添加为您自己用户的 crontab。问题是
cron
无法进行身份验证,sudo
因此无法运行您的命令。最简单的方法是将 crontab 添加到root
的帐户:然后,添加这一行:
如此简单的事情不需要脚本,因此您也可以添加命令本身。无论哪种方式,您都不想
sudo
与它一起使用。回应您的编辑:
要排除各种可能的并发症,
inreadobase_backup.sh
请看起来像这样:然后,要捕获任何错误,请将脚本的错误输出重定向到一个文件,方法是
2> file
在您的cron
行中添加:然后您可以查看
/tmp/cron.error
更多详细信息。