If your dont know what is cron, learn it now:
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/
If your crontab is working well now, skip this post. Otherwise, try to figure out why it does not work.
0. Find out whether cron daemon running or not
hvn@squeeze:~/Apps/birth-reminder$ pgrep cron
1530
If you got a number, it is running. If not, start it up
sudo service cron start
1. Make sure your time is set right
If your clock is wrong, then crontab will not run task on time
You should check your hardware time instead of system time.
Hardware time:
sudo hwclock
System time:
date
2. Test your script.
Eg, if you want to use a python script, it may work perfectly when you run it with
python script_name.py
or
chmod a+x script_name.py
./script_name.py
maybe it not run with full absolute path. Try run it with full path. Eg:
/home/hvn/bin/script_name.pyIf it not work, fix it with this solution:
http://stackoverflow.com/questions/11354912/why-does-directly-run-script-not-work-but-python-script-name-py-does
3. Check some popular reasons make cronjob not run task
From this list:
http://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work
4. Read log, mail and see what happened.
Change your cronjob to run every minute to "debug" it
In Ubuntu(12.04)/Debian(6.0), read log file:
hvn@squeeze:~$ sudo tail -f /var/log/syslog
[sudo] password for hvn:
Aug 8 09:42:26 squeeze crontab[2039]: (hvn) BEGIN EDIT (hvn)
Aug 8 09:42:37 squeeze crontab[2039]: (hvn) REPLACE (hvn)
Aug 8 09:42:37 squeeze crontab[2039]: (hvn) END EDIT (hvn)
Aug 8 09:43:01 squeeze /usr/sbin/cron[1530]: (hvn) RELOAD (crontabs/hvn)
Aug 8 09:43:01 squeeze /USR/SBIN/CRON[2073]: (hvn) CMD (~/Apps/birth-reminder/reminder.py)
Aug 8 09:45:02 squeeze crontab[2223]: (hvn) BEGIN EDIT (hvn)
Aug 8 09:45:13 squeeze crontab[2223]: (hvn) REPLACE (hvn)
Aug 8 09:45:13 squeeze crontab[2223]: (hvn) END EDIT (hvn)
Aug 8 09:45:17 squeeze crontab[2227]: (hvn) LIST (hvn)
Aug 8 09:46:01 squeeze /usr/sbin/cron[1530]: (hvn) RELOAD (crontabs/hvn)
Aug 8 09:46:34 squeeze anacron[1456]: Job `cron.daily' started
Aug 8 09:46:34 squeeze anacron[2256]: Updated timestamp for job `cron.daily' to 2012-08-08
when your cronjob run, you will see a log with
CMD (PATH_TO_YOUR_SCRIPT)
Read mail:
Each time cronjob run, it will send an email to your mailbox host on your computer. You may find it in /var/mail/your_name
See what happened in mail content
hvn@squeeze:~$ tail -n 15 /var/mail/hvn
Date: Wed, 08 Aug 2012 09:43:20 +0700
Message-Id: <E1SywEy-0000Xr-T6@squeeze>
From: root@squeeze (Cron Daemon)
To: hvn@squeeze
Subject: Cron <hvn@squeeze> ~/Apps/birth-reminder/reminder.py
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/hvn>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=hvn>
Sent to ['bot.c2k8pro@gmail.com']
Today is 08/08
Tomorrow is Trịnh Thị Thu Hiền's birthday
18 mails:
....
You may got a log from log said that you have no email agent. So install one MTA (Eg: postfix, exim4...)
crontab, why does crontab not run, crontab not run, crontab doesnt run, why doesn't crontab work
No comments:
Post a Comment