开发手册 欢迎您!
软件开发者资料库

Linux crontab 命令

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux crontab 命令。crontab是用于在Vixie cron中安装、卸载或列出用于驱动cron守护进程的表的程序。

1、命令简介

crontab: 计划命令在指定的时间或时间间隔执行命令。

2、命令用法

crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }crontab [ -u user ] [ -i ] { -e | -l | -r }crontab [ -u user ] [ -l | -r | -e ] [-i] [-s]

crontab格式:


* * * * * Command_to_execute| | | | | | | | | Day of the Week ( 0 - 6 ) ( Sunday = 0 )| | | || | | Month ( 1 - 12 )| | || | Day of Month ( 1 - 31 )| || Hour ( 0 - 23 )|Min ( 0 - 59 )

    说明:

    *:指定字段的所有可能值。每小时或每天。

    ,:指定一个值列表,例如,"1,3,4,7,8"。

    -:指定一个值范围,例如,1-6,相当于“1、2、3、4、5、6”。

    /:可以用来跳过给定数量的值。例如,小时时间域中的*/3等于 "0、3、6、9、12、15、18、21" ;*指定了每小时,但/3表示只有第一、第四、第七…使用由*给出的这些值。

    cron将向用户发送它运行的命令的所有输出,为了消除这种情况,将输出重定向到一个日志文件或/dev/null。

    3、命令描述

    crontab是英文“cron table”的简写。该命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

    Linux下的任务调度分为两类,系统任务调度和用户任务调度。

    系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。/etc/crontab文件是系统任务调度的配置文件。用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

    如果给出一个-u选项,它指定要调整crontab的用户的名称。如果没有给出这个选项,crontab会检查“你的”crontab,即执行命令的人的crontab。

    注意:su可能会使crontab感到困惑,如果在su中运行,为了安全起见,应该始终使用-u选项。cron文件用于从一些命名文件或标准输入安装一个新的crontab,如果伪文件名'-'是给定的。

    4、命令选项

    选项

    描述

    -e

    编辑该用户的计时器设置

    -l

    列出该用户的计时器设置

    -r

    删除该用户的计时器设置

    -u

    指定要设定计时器的用户名称

    --help

    显示帮助信息

    1)要在crontab中安装或更新job,请使用-e选项

    $ crontab -e

    2)要列出crontab条目,请使用-l选项

    $ crontab -l

    3)要从crontab脱离作业,请使用-r选项

    $ crontab -r

    4)要从Crontab确认卸载作业,请使用-i选项

    $ crontab -i -r

    5)要将selinux安全性添加到crontab文件,请使用-s选项

    $ crontab -s

    6)要编辑其他用户Crontab,User -U选项并指定用户名

    $ crontab -u username -e

    7)要列出其他用户crontab条目

    $ crontab -u username -l

    5、使用示例

    1)每天23.59运行/usr/bin/sample.sh并不输出信息

    59 23 * * * simon /usr/bin/sample.sh > /dev/null 2>&1

    2)每天在下午8点(20:00)运行sample.sh

    0 20 * * * sample.sh 1>/dev/null 2>&1

    3)每周二到周六凌晨1点45分(01:45)运行sample.sh

    0 1 * * 2-7 sample.sh 1>/dev/null 2>&1

    4)在08:30运行Sample.sh,09:30 12:30和14:30

    30 08,09,12,14 * * * sample.sh

    5)每天凌晨2点运行sample.sh(这在日常备份文件/数据库等情况下被使用)

    0 2 * * *  sample.sh

    6)每天凌晨5点和下午5点运行sample.sh

    0 5,17 * * * sample.sh

    7)每分钟运行sample.sh

    * * * * * sample.sh

    8)每个星期天在下午5点运行样本。

    0 17 * * sun  sample.sh

    9)每隔10分钟运行sample.sh。 

    */10 * * * * sample.sh

    10)在指定的月份运行sample.sh。

    * * * jan,may,aug *  sample.sh

    11)在指定日运行sample.sh。

    0 17 * * sun,fri  sample.sh

    12)每个月的第一个星期天运行sample.sh

    0 2 * * sun  [ $(date +%d) -le 07 ] && sample.sh

    13)每四个小时运行sample.sh

    0 */4 * * * sample.sh

    14)每周日和星期一运行sample.sh

    0 4,17 * * sun,mon sample.sh

    15)每30秒运行sample.sh

    * * * * * sample.sh* * * * *  sleep 30; sample.sh

    16)使用单个cron运行多个作业

    * * * * * sample1.sh; sample2.sh

    17)每年运行sample.sh(@eearly)

    @yearly sample.sh

    18)每月运行sample.sh(@monthly)

    @monthly sample.sh

    19)每周运行sample.sh(@weekly)

    @weekly sample.sh

    20)每天运行sample.sh(@daily)

    @daily sample.sh

    21)每小时运行sample.sh(@hourly)

    @hourly sample.sh

    22)在系统重新启动时运行sample.sh(@reboot)

    @reboot sample.sh