2009年3月29日星期日

/bin/sh: root: not found

root用户经常收到这样的错误邮件:

  From: Cron Daemon <root>   To: root   Subject: Cron <root@fwolf> root /home/fwolf/bin/cmd_run_in_crontab   X-Cron-Env: <SHELL=/bin/sh>   X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin>   X-Cron-Env: <HOME=/root>   X-Cron-Env: <LOGNAME=root>     /bin/sh: root: not found    

这个问题很简单,但也容易让人糊涂,先说原因吧, /etc/crontab 中格式是这样的:

  17 * * * * root cd / && run-parts --report /etc/cron.hourly    

root# crontab -e 出来的应该是这样:

  17 * * * * cd / && run-parts --report /etc/cron.hourly    

注意, /etc/crontab 是针对整个系统的,所以第6列是用户名, root# crontab -e 是root用户的,所以第6列就直接是命令了。

这有什么好糊涂的呢,因为这两个文件很可能会一模一样,我就是这样,后来才发现他们的不同,不信用 root# crontab -e 修改些内容再和 /etc/crontab 对比就知道了。

现在, /bin/sh: root: not found 这个错误不用我再解释了吧?直接拷贝crontab到root的后遗症。

Tags: , , ,

Related posts

Source: http://www.fwolf.com/blog/post/436