Why isn't my cronjob running?
Solution 1
- Try using full path for php in cron config:
/usr/bin/php
- Check apache home directory:
grep apache /etc/passwd
As far as I know, user should always have home directory. It may reside not in /home. - Check syslog messages about security events. If this is PAM, you'll see something
- Try disabling SELinux
Solution 2
A home directory must be set for the user. If the user doesn't have one, you can specify it directly in the cron.d-file.
You probably need to provide PATH=/usr/bin/ too, or specify full path for the command.
HOME=/tmp
0 3 * * * apache /usr/bin/php /path/to/my/script.php
Related videos on Youtube
Tom
Updated on September 18, 2022Comments
-
Tom almost 2 years
I have a cronjob in
/etc/cron.d/mycron
that looks like this:0 3 * * * apache php /path/to/my/script.php
In the same file there are other cronjobs begin run as root and other users (which work), but for some reason this job running as apache isn't running and isn't reporting anything in
/var/log/messages
or sending anything to theMAILTO
address in the cron file. When Isu apache
and run the cronjob's command, it works fine, but cron doesn't like it.This is a long running problem for me and so far I have gathered the following possibilities:
- The apache user doesn't have a home directory (the other cron users do), and crond doesn't like this.
- There's some PAM or
/etc/security/access.conf
setting blocking apache using crond, although/etc/security/access.conf
is completely commented out. - SELinux - this is usually the culprit when a problem seems really weird.
Any ideas or experience with this problem and what the solution might be?
Thanks
-
user9517 almost 12 yearsWhat are the ownership and permissions on the file ?
-
Garrett almost 12 yearsIs the cron daemon running?
-
Tom almost 12 years
$ service crond status
...crond (pid 28490) is running...
. Also, the file perms are664
, but since I can log in as apache myself and run the command manually this cannot be the issue. -
Tom almost 12 yearsThere's no mention of the cronjob in
/var/log/cron
-
Tom almost 12 yearsFor simplicity I removed the full path when I posted on here - but yes, the actual cronjob is
0 3 * * * apache /usr/local/bin/php -c /etc/php.ini /path/to/my/script.php
-
Tom almost 12 yearsFound it.
(CRON) ERROR chdir failed (/home/apache): No such file or directory
. Cron users need a home dir.