Linux定时任务的几种方式

crontab 命令

crontab -l:列出当前的定时任务
crontab -e:编辑当前的定时任务,默认是vi编辑器

格式

f1 f2 f3 f4 f5 program
  • 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,以此类推
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,以此类推
  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,以此类推
  • 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,以此类推
*    *    *    *    *  
-    -    -    -    -  
|    |    |    |    |  
|    |    |    |    +----- 星期中星期几 (0 - 7) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

实例

0 * * * * /bin/ls # 每月每天每小时的第 0 分钟执行一次 /bin/ls
0 */2 * * * /sbin/service httpd restart  # 每两个小时重启一次apache 

/etc/crontab

格式

# .---------------- 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 * * * * root /bin/ls # 每月每天每小时的第 0 分钟执行一次 /bin/ls
0 */2 * * * root /sbin/service httpd restart  # 每两个小时重启一次apache 

几种便捷写法

@hourly 代表 0 * * * * ,每个小时运行一次
@daily 代表 0 0 * * * ,每天凌晨运行一次
@weekly 代表 0 0 * * 0 ,每周星期天凌晨运行一次
@monthly 代表 0 0 1 * * ,每个月第一天凌晨运行一次
@yearly 代表 0 0 1 1 * ,每年的头一分钟运行一次
@reboot 重启后执行一次
@reboot root /sbin/service httpd start  # 开机启动apache

/etc/cron.d

/etc/cron.d/
/etc/cron.hourly/  # 每小时执行一次下面的程序
/etc/cron.daily/  # 每天执行一次下面的程序
/etc/cron.monthly/  # 每月执行一次下面的程序
/etc/cron.weekly/  # 每周执行一次下面的程序

/etc/cron.d/下面的文件和/etc/crontab文件格式一样。
/etc/cron.d/0hourly文件控制定时执行/etc/cron.hourly/下面的程序

cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

/etc/anacrontab文件控制定时执行/etc/cron.daily/, /etc/cron.monthly/,/etc/cron.weekly/下面的命令

cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1	5	cron.daily		nice run-parts /etc/cron.daily
7	25	cron.weekly		nice run-parts /etc/cron.weekly
@monthly 45	cron.monthly		nice run-parts /etc/cron.monthly

你可能感兴趣的:(linux)