Linux 即使设置了crontab路径,也找不到命令

Linux 即使设置了crontab路径,也找不到命令,linux,unix,cron,crontab,Linux,Unix,Cron,Crontab,即使我将/etc/crontab中的路径设置为 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/mailman/cron:/usr/lib/mailman/bin 在/usr/lib/mailman/cron中找到的命令仍然没有找到,因此会向root用户发送一封邮件 /bin/sh: mailman: command not found 我已经调试了这个问题,设置了一个cron条目 * * * * * /bin/echo "`/bin/date`: $

即使我将/etc/crontab中的路径设置为

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/mailman/cron:/usr/lib/mailman/bin
在/usr/lib/mailman/cron中找到的命令仍然没有找到,因此会向root用户发送一封邮件

/bin/sh: mailman: command not found
我已经调试了这个问题,设置了一个cron条目

* * * * * /bin/echo "`/bin/date`: $PATH" >> /tmp/crontest.log 2>&1
使用crontab-e,它实际上将路径写入/tmp/crontest.log,确认在/etc/crontab中输入的路径不是cron认为应该的路径

Fri Feb 14 10:22:01 CET 2014: /usr/bin:/bin
我还尝试通过使用servicecondrestart和servicecondstop重新启动cron来解决这个问题;睡眠5;服务crond start也会执行相同的操作,但要绝对确保它已重新启动,但这不会改变任何事情

每个人都可以读取/etc/crontab文件权限为644 root

-rw-r--r-- 1 root root 500 10 feb 10:36 /etc/crontab
/var/log/cron没有显示有关问题的任何信息,只是显示启动了什么以及何时重新启动cron

grep -v CMD /var/log/cron
.
.
.
Feb 14 09:45:34 p1kitlst01l crond[12214]: (CRON) INFO (running with inotify support)
Feb 14 09:45:34 p1kitlst01l crond[12214]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
Feb 14 09:48:07 p1kitlst01l crontab[12331]: (root) BEGIN EDIT (root)
Feb 14 09:48:45 p1kitlst01l crontab[12331]: (root) REPLACE (root)
Feb 14 09:48:45 p1kitlst01l crontab[12331]: (root) END EDIT (root)
Feb 14 09:49:01 p1kitlst01l crond[12214]: (root) RELOAD (/var/spool/cron/root)
Feb 14 10:01:01 p1kitlst01l run-parts(/etc/cron.hourly)[13010]: starting 0anacron
Feb 14 10:01:01 p1kitlst01l run-parts(/etc/cron.hourly)[13027]: finished 0anacron
Feb 14 10:01:01 p1kitlst01l run-parts(/etc/cron.hourly)[13010]: starting mcelog.cron
Feb 14 10:01:01 p1kitlst01l run-parts(/etc/cron.hourly)[13039]: finished mcelog.cron
Feb 14 10:19:16 p1kitlst01l crontab[13840]: (root) BEGIN EDIT (root)
Feb 14 10:19:23 p1kitlst01l crontab[13840]: (root) END EDIT (root)
Feb 14 10:27:17 p1kitlst01l crond[14170]: (CRON) STARTUP (1.4.4)
Feb 14 10:27:17 p1kitlst01l crond[14170]: (CRON) INFO (running with inotify support)
Feb 14 10:27:17 p1kitlst01l crond[14170]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
对我需要考虑的问题有什么建议吗


亨里克

我认为,你有两条路要走,也许其他人会提供更多

1在脚本中设置邮递员的绝对路径

2生成.profile,然后运行脚本,例如:

0 1 * * * . ~/.profile; bash your_script.sh

非常感谢。但是,1路径是绝对路径,2将是一个解决方法。由于cron通常不提供/etc/profile而不是~/.profile,因此假设它使用/etc/crontab中的路径行,因为cron在此之前不知道任何信息。我想解决这个问题,而不仅仅是实施一个变通办法。这不是变通办法,我们确实通过这种方式解决了cronjob问题。查看用户mailman的cron-crontab-u-mailman-l显示,从默认mailman cron文件加载的cron条目,所有提到的用户mailman 304***mailman/usr/lib/mailman/cron/cull_bad_,就像/etc/cron.d/mailman语法一样。通过发出crontab-u mailman-r并重新启动mailman,mailman默认的cron文件被复制到/etc/cron.d/mailman。使用crontab-l通常需要在cron调用的脚本中设置路径。我仍然不明白为什么使用crontab-e不使用/etc/crontab文件中指定的路径,即使对于新的crontab,这是否回答了您的问题?