I apologize already for asking another cron question. I read dozens of help articles online with still no solution. So for my curiosity, I need to find a solution.
I simply want to run a command every day at 4am. This is what I have done so far:
# crontab -e. Add this line:00 04 * * * root ruby /home/script.rb list >> /tmp/output.log. (script.rb just contains "puts 'hello'")- script.rb is owned by root and permissions are set to execute on all users.
- I ran
rvm cron setupto install some environment variables to the crontab file for the cron job to find my ruby executable files. - Added more environment variables to crontab file such as my
PATH,SHELL=/bin/bashandBASH_ENV=/root/.bashrc.
After 4am, I check the cron logs and indeed, the script was executed.
Dec 14 4:00:01 admin CRON[25374]: (root) CMD (root ruby /home/script.rb list >> /tmp/output.log) but when I check /tmp, no output.log file exists. When I run the command by itself, /tmp/output.log shows up and contains hello so the command works.
- So I go back to my crontab file and change
rubyto/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby(output ofwhich ruby) to make everything absolute paths. It runs, but still no /tmp/output.log. - I replace the line in crontab to:
00 04 * * * root /home/run_scriptinstead whererun_scriptcontains:
#!/bin/bash /usr/local/rvm/rubies/ruby-2.2.1/bin/ruby /home/script.rb list >> /tmp/output.logto simply try using a script file instead of one line command in crontab. It runs, but still no /tmp/output.log. - I go into
run_scriptfile and get rid of all the ruby stuff and go the simple route:
#!/bin/bash echo "hello" >> /tmp/output.logIt runs, but still no /tmp/output.log.
I should also note, I set MAILTO=root in my crontab file, but no mail delivered to root.
- Now I did another experiment, when I take
run_scriptand put it into/etc/cron.daily, it runs great. No problems.
Other notes: Cron is running: ps -ef | grep cron | grep -v grep outputs cron is running. There is a blank line after my command in the crontab file.
cron seems pretty tough to debug. The sys log just tells me that the cron job ran but tells nothing else. I am not getting any mail delivered so that cannot help me. Luckily /etc/cron.daily works for now, but I want to know why crontab is not working.
Any suggestions, ideas, hints at debugging?