Cron is for scheduling tasks.
1. Basic terms
crontab -e- (commands) maintains crontab files for individual users, with flag
-eto edit a crontab file of current user)
crontab- files used to schedule the execution of programs
2. How to add/ edit a cron task
Although there are a system wide cron file
/etc/crontab. You can take a look by using
cat /etc/crontab. I instinctively left it alone after seeing its content (mostly because I was scare).
sudo crontab -e to edit root account crontab file or
crontab -e to edit user account crontab file.
I have intensively used Debian for a long time and find that
crontab -e for normal user is enough for me.
3. A task pattern in crontab file
For system wide task in
/etc/crontab. Notice the
* * * * * user-name command to be executed
* * * * * command to be executed
Note: I get this guide from the file
# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
Because I rarely write one myself, I cannot affort to re-learn it every time I need one - I often just Google it.
4. Reload/ restart service after edit
sudo service cron restart
sudo service cron reloadalso work. It is always safer to use
reloadsometime do not exist for a service.
restart = stop + start
reload = remain running + re-read configuration file
- So if
reloaddoes exist, it is preferable to
restartbecause there will be no down time.
- If you want a thoroughly read, go here: The Debian Policy Manual
5. Check the service status
sudo service cron status
6. System log
A cron task is often need trouble-shooting, especially right after being set up.
Cron logs its actions via syslog, which (depending on your Linux distro) often go to
sudo grep CRON /var/log/syslog
7.Create your own logs
I find the system log messy (the system-wide cron tasks also logged here) and not give enough information for a specific command, I like to log it myself.
1 2 * * * /path/to/your/command >/tmp/mycommand.log 2>&1
Mine (with date added): The task is for changing my wallpaper every 20 minutes.
*/20 * * * * (/bin/date && /home/dat/Custom/nitrogenSlideShow.py) > /tmp/mycommand.log 2>&1
>> is appended;
> is overriten.
8.Check if cron is running in system:
ps -ef | grep cron
ps (processes status) is a command to view a selection of running processes. It get the info from
root 5254 1 0 14:52 ? 00:00:00 /usr/sbin/cron -f dat 25396 25201 0 18:18 pts/4 00:00:00 grep cron