用户 cron 作业未运行,但系统作业正在运行

用户 cron 作业未运行,但系统作业正在运行

如果我没有尝试在互联网上找到的所有方法,就不会在这里发帖...如果能得到经验丰富的系统管理员的任何指导,我将不胜感激。

这是我的问题: 等中的 cron 作业/etc/cron.daily/etc/cron.hourly我的 Slicehost Ubuntu 服务器上运行良好 - 它们的执行被记录到/var/log/syslog/var/log/cron.log

我通过 crontab 创建了两个测试 cron 作业,一个以 root 用户身份运行,一个以管理员用户身份运行,它们应该每分钟运行一次。以下是以crontab -lroot 用户身份运行的输出

$ crontab -l
* * * * * /bin/date > /tmp/unicorns
$ crontab -u neil0 -l
* * * * * /home/neil0/crontab/unicorn.sh >> /home/neil0/logs/crontab.log >&1

编辑 1:我没有完全复制这个...输出中没有换行符,这就是问题的根源

以下是unicorn.sh

#!/bin/sh
echo 'UNICORNS'

但是/home/neil0/logs/crontab.log也没有/tmp/unicorns被更新,并且没有这些作业在/var/log/syslog或中运行的记录/var/log/cron.log

在你询问之前,cron 确实正在运行——

$ ps aux | grep cron
root      1588  0.0  0.1  18616   980 ?        Ss   12:31   0:00 /usr/sbin/cron
root      1798  0.0  0.1   3944   604 pts/0    R+   13:01   0:00 grep cron

如果你想知道“独角兽”是不是我用来代替“F***”的沮丧词,自从一个实时网站的调试出现问题之后,所以正如你所看到的,我在这里几乎已经束手无策了。任何帮助都将不胜感激。

答案1

呃……嗯。所以我猜你们大多数人已经知道了,你需要用换行符来结束你的 crontab 文件。这就是整个问题。希望这对其他人有所帮助

答案2

请记住,在 crontab 中,与在 shell 中不同,您需要转义特殊字符,即

0 0 * * * backup_command > /var/log/backup-$(date +**\\**%a).log

相关内容