在Crontab中使用相对路径

时间:2014-01-29 02:31:02

标签: php cron centos crontab

我试图在CentOS 6.4上的crontab文件中使用相对路径,这样我就不必一遍又一遍地重复相同的绝对路径。在我的crontab文件的顶部,位于/etc/crontab,我有:

SHELL=/bin/bash
PATH=/var/www/html/crons
MAILTO=""
HOME=/

我的每个命令都是:

*/2 * * * * root /usr/bin/php "cronfile.php" >> "logs/cronfile_"`date +\%Y\%m\%d`".log"

我希望它会在cronfile.php目录中运行/var/www/html/crons PHP文件,并将输出保存到/var/www/html/crons/logs/cronfile.log。但是,该文件未运行且未创建日志文件。

如果我只运行该命令就可以了:

/usr/bin/php "cronfile.php" >> "logs/cronfile_"`date +\%Y\%m\%d`".log"
cd进入/var/www/html/crons目录后,从命令行

请指教,谢谢。

2 个答案:

答案 0 :(得分:2)

默认情况下,

/usr/bin已在大多数系统的PATH中,因此您应该可以从crontab顶部删除PATH声明。

您的作业在bash shell中运行,因此您可以执行以下操作:

*/2 * * * * root cd /var/www/html/crons && php cronfile.php >> cronfile_`date +\%Y\%m\%d`.log

答案 1 :(得分:1)

经过多次试验和研究,我发现解决方案使用的是HOME=变量,而不是PATH=变量,如下所示:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/var/www/html/crons

然后每条线看起来都像:

*/2 * * * * root /usr/bin/php cronfile.php >> logs/cronfile_`date +\%Y\%m\%d`.log

希望这可以帮助其他人解决我将来遇到的同样问题。

相关问题