Crontab

From Psygen Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Cron is the name of program that lets you execute commands or scripts automatically at a specified time/date. Crontab is the program to mange cron jobs.

crontab -e Lets you edit cron jobs for the current user (You can use su to switch users to manage their cron jobs.)

Fields

Each line has five time-and-date fields, followed by a command, followed by a newline character ('\n'). The fields are separated by spaces. The five time-and-date fields cannot contain spaces. The five time-and-date fields are as follows:

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday).

# .---------------- 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


Note:
These files are stored at /var/spool/cron or /var/spool/cron/crontabs

Examples

01 04 1 1 1 /usr/bin/somedirectory/somecommand

The above example will run /usr/bin/somedirectory/somecommand at 4:01am on January 1st plus every Monday in January.

An asterisk (*) can be used so that every instance (every hour, every weekday, every month, etc.) of a time period is used

01 04 * * * /usr/bin/somedirectory/somecommand

The above example will run /usr/bin/somedirectory/somecommand at 4:01am on every day of every month.

You may want to run a script some number of times per time unit. For example if you want to run it every 10 minutes use the following crontab entry (runs on minutes divisible by 10: 0, 10, 20, 30, etc.)

*/10 * * * * /usr/bin/somedirectory/somecommand

Special Strings

Cron also offers some special strings, which can be used in place of the five time-and-date fields:

String           Meaning
@reboot           Run once, at startup.
@yearly           Run once a year, "0 0 1 1 *".
@annually           (same as @yearly)
@monthly           Run once a month, "0 0 1 * *".
@weekly           Run once a week, "0 0 * * 0".
@daily           Run once a day, "0 0 * * *".
@midnight           (same as @daily)
@hourly           Run once an hour, "0 * * * *".


Check what cron jobs are setup

crontab -l - list the cron jobs for the current user

crontab -e - edit the cron jobs for the current user

Check cron jobs for all users (the following must be ran as root):
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done


Run a php page as a cron job

Add ONE of the following lines:

45 * * * * /usr/bin/lynx -source http://example.com/cron.php

45 * * * * /usr/bin/wget -O - -q -t 1 http://www.example.com/cron.php

45 * * * * curl -s http://example.com/cron.php

45 * * * * /usr/bin/php -q /home/$user/public_html/script.php >/dev/null 2>&1

References

  1. Crontab Man Page
  2. Cron How To
  3. How to add Cron jobs
  4. Geek Stuff 15 crontab examples
  5. Cron Job Creator