为什么这个 crontab 作业没有运行

为什么这个 crontab 作业没有运行

我有一个在 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.

相关内容