linux cron

crontab命令常见于Unix类Unix操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρόνος),原意是时间。

通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

 

 

crontab文件

 

crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。

crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。

crontab的文件格式如下:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# 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

注:

  • 在“星期域”(第五个域),0和7都被视为星期日。
  • 不很直观的用法:如果日期和星期同时被设定,那么其中的一个条件被满足时,指令便会被执行。
  • 前5个域称之分时日月周,可方便个人记忆。
  • 第六个域为用户名(指派哪个用户来执行)
  • 第七个域为具体要执行的命令
  • 编写crontab时要特别注意HOME,HOME为启动的根路径。

 

 

操作符号

 

在一个区域里填写多个数值的方法:

  • 逗号 (',') 分开的值,例如:“1,3,4,7,8”
  • 连词符 ('-') 制定值的范围,例如:“1-6”,意思等同于“1,2,3,4,5,6”
  • 星号 ('*') 代表任何可能的值。例如,在“小时域” 里的星号等于是“每一个小时”,等等

某些cron程序的扩展版本也支持斜线 ('/') 操作符,用于表示跳过某些给定的数。例如,“*/3”在小时域中等于“0,3,6,9,12,15,18,21”等被3整除的数;

 

 

例子

 

每天3点自动调用wordpress_backup.sh脚本:

0 3 * * * root bash /root/wordpress_backup.sh

 

资料: Computer Hope Linux / UNIX 中crontab的用法
 

发表评论