27

I have a crontab file that looks like this:

* * * * * /home/abliskovs/update/update.sh

However when I check the syslog for evidence that the job has run, there is nothing that might indicate that it ever ran. How can I check if it's running?

crontab -l outputs the following:

* * * * * /home/abliskovs/update/update.sh

  • Maybe a dumb question, but it happened to me before so I will ask anyways. Make sure that the cron daemon is actually running! :P Second guess is permissions, make sure it is executable by the user running the cronjob. – Mattias Ahnberg Jan 19 '12 at 22:38

4 Answers4

25

Add a >>/tmp/testlog.log to the end of your crontab entry (to redirect output to a file you can investigate or check if it's running, additionally a 2>&1 would include output from the error console)

Example

0 * * * * /home/abliskovs/update/update.sh 2>&1 /tmp/testlog.log

Also Make Sure the followings :

  • Add cronjobs in a right manner. if you've used crontab -e within your own account, scripts are run with your user (and thus the crontab entry has one field less -- the user to run it, as that is known). If you simply copied your above snipped to /etc/cron.d, it would fail as you didn't specify a user (or rather as it finds no user named "bash").
  • Make sure that the script file is executable, otherwise it will not execute it.
  • Reload the cron jobs sudo service reload, or restart cron service sudo /etc/init.d/cron restart

How to make a file executable?

Several ways to make your file executable

chmod +x /home/abliskovs/update/update.sh 

chmod -R 0755 /home/abliskovs/update/update.sh

chmod a+x /home/abliskovs/update/update.sh
laurent
  • 284
  • It should be executing every minute, but /tmp/testlog.log doesn't exist and syslog shows no cron errors, and pgrep cron shows it running. I don't get it – endolith Mar 13 '21 at 05:26
3

Make sure that the script file is executable {chmod 755} otherwise it will not execute it

user25
  • 31
0

I have experienced same issue and the cause for me was that crontab was not running because it didn't have permission to it. I have changed file and put it in /tmpt/output.log

*/5 * * * * /usr/bin/php /home/ubuntu/app/artisan cmd:process-order > /tmp/queue.output

Let me know if this works for you.

Kamaro
  • 101
0

The shell script update.sh probably contains errors, for example some commands that can not be executed because the command can not be found. In this case it may help to add the path to your command in the PATH variable, or to add it in front of your command directly. It also helps to specify the MAILTO e-Mail address, e-Mails which result from executing Cronjobs are sent to this address

PATH=/path/to/your/command:/another/important/path
MAILTO=my_name@my_domain 

You also may check the local mailbox with mail and the syslog file in /var/log/syslog for errors. See also this related question why cronjobs may not work.