I am attempting to use relative paths in my crontab file on CentOS 6.4, so that I do not have to repeat the same absolute path over and over again. At the top of my crontab file, located here: /etc/crontab, I have:

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

And each of my commands looks like:

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

I'm expecting that it'll run the cronfile.php PHP file in the /var/www/html/crons directory, and save the output from this to /var/www/html/crons/logs/cronfile.log. However, the file is not being run and the log file is not being created.

The command works fine if I run just:

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

from the command line after cding into the /var/www/html/crons directory.

Please advise, thanks.

有帮助吗?

解决方案

After many trials and research, I discovered that the solution was using the HOME= variable, not the PATH= variable, like so:

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

And then each of the lines would just look like:

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

Hope this helps someone else with the same issue I had in the future.

其他提示

/usr/bin is already in the PATH on most systems by default, so you should be able to remove the PATH declaration from the top of your crontab.

Your job is running in a bash shell so you could do something like:

*/2 * * * * root cd /var/www/html/crons && php cronfile.php >> cronfile_`date +\%Y\%m\%d`.log
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top