Help debugging a cron job which has the correct script path and works when manually triggered

kenny99 picture kenny99 · Aug 31, 2010 · Viewed 7.3k times · Source

I'm struggling trying to debug a cron job which isn't working correctly. The cron job calls a shell script which should unrar a rar file - this works correctly when i run the script manually, but for some reason it's not working via cron. I am using the absolute file path and have verified that the path is correct. Has anyone got any ideas why this could be happening?

Answer

DarkDust picture DarkDust · Aug 31, 2010

Well, you already said that you have used absolute paths, so the number 1 problem is dealed with.

Next to check are permissions. As which user is the cron job run ? Does he have all the permissions necessary ?

Then, a little trick: if you have a shell script that fails and it's not run in a terminal I like to redirect the output of it to some files. Right at the start of the script, add:

exec &>/tmp/my.log

This will redirect STDOUT and STDERR to /tmp/my.log. Then it might also be a good idea to also add the line:

set -x

This will make bash print which command it's about to execute, and at what nesting level.

Happy debugging !