我有一个在 Ubuntu 12.04 机器上每分钟运行一次的 cron 作业
$sudo crontab -e
* * * * * mylogin /pathto/file.sh > /log/filelog
如果我运行file.sh
,bash 脚本会执行一些操作并回显runs
:
$ ./file.sh
runs
如果我检查 cron 选项卡的日志,它显示该作业正在运行:
Jul 10 12:41:01 localhost CRON[1811]: (root) CMD (mylogin /pathto/file.sh > /log/filelog)
Jul 10 12:41:01 localhost CRON[1810]: (CRON) info (No MTA installed, discarding output)
Jul 10 12:42:01 localhost CRON[1813]: (root) CMD (mylogin /pathto/file.sh > /log/filelog)
但是,该脚本没有运行。它没有做它的工作,也没有runs
回响/log/filelog
。
$cat /log/filelog #shows nothing
我还可以采取哪些其他步骤来调试此问题?
答案1
mylogin
指定文件的用户名/etc/crontab
。使用您的命令,sudo crontab -e
您实际上正在编辑/var/spool/cron/crontabs/root
,并且您不应该在这样的文件中指定用户名,而只能在/etc/crontab
.
如果您必须以用户身份运行该命令,则mylogin
必须将该行放入/etc/crontab
(并使用root
特权编辑它),或者只是将其放入mylogin
用户的 crontab 中。
从man 5 crontab
:
EXAMPLE SYSTEM CRON FILE
The following lists the content of a regular system-wide crontab file.
Unlinke a user's crontab, this file has the username field, as used by
/etc/crontab.