使用crontab命令定时执行脚本的方法
crontab命令详解
crontab命令在Unix和Linux操作系统中被广泛使用,用于设定定时执行的任务。该命令从标准输入读取指令,并将其存储在“crontab”文件中,以便后续执行。
在Linux环境下,任务调度主要分为两大类:第一类是系统自动执行的任务,如定期备份数据和清理缓存;第二类是用户自定义的任务,例如每隔10分钟检查邮件服务器的新邮件,这些任务可以由用户自行设定。
一、/etc/crontab、/etc/cron.deny和/etc/cron.allow文件说明
系统调度任务通常存储在/etc/crontab文件中,该文件包含了系统的调度程序。可以通过以下命令查看其内容:

[[email protected] ~]# cat /etc/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

这些任务在系统启动后会自动调度执行。此外,/etc目录下还包括/etc/cron.deny和/etc/cron.allow文件。
/etc/cron.deny文件列出不允许使用crontab命令的用户。
/etc/cron.allow文件列出允许使用crontab命令的用户。
当这两个文件同时存在时,以/etc/cron.allow为准。
如果两个文件都不存在,只有root用户可以安排任务。
二、crontab命令的语法及参数解析
crontab命令的基本语法为:
crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
需要注意的是,crontab用于设定程序在特定时间或间隔执行,类似于用户的日程表。-u user参数用于指定某个用户的日程表,前提是你必须拥有相应权限(例如,root用户)。如果不带-u user,则表示设置自己的日程表。
各参数说明:
-e [UserName]: 进入文字编辑器以编辑日程表,默认编辑器为vi -r [UserName]: 删除当前日程表 -l [UserName]: 列出当前日程表 -v [UserName]: 列出用户的cron作业状态
三、crontab命令的格式
若要创建新的任务调度,可以使用crontab -e命令,例如:
[[email protected] ~]# crontab -e
此时会打开vi编辑器,允许编写调度任务。crontab调度命令的格式如下:
* * * * * command path // 前五个字段指定何时执行任务,第六个字段为命令字符串,各字段之间用空格或制表符分隔。
调度命令的字段规则如下:
| 字段名称 | 说明 | 取值范围 |
| 分钟 | 每小时的第几分钟执行 | 0-59 |
| 小时 | 每日的第几个小时执行 | 0-23 |
| 日期 | 每月的第几天执行 | 1-31 |
| 月 | 每年的第几月执行 | 1-12 |
| 星期 | 每周的第几天执行 | 0-6 |
| 命令名称 | 要执行的命令及其参数 |
crontab命令中常用的特殊符号如下:
| 符号 | 说明 |
| * | 表示任何时刻 |
| , | 表示分隔 |
| - | 表示一个范围,例如1-5表示从1点到5点 |
| /n | 表示每n个单位执行一次,如*/1表示每小时执行一次命令。也可以写作1-23/1。 |
以下是一些crontab命令的示例:

00 8,12,16 * * * /data/app/scripts/monitor/df.sh 30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh 10 8,12,16 * * * /data/app/scripts/monitor/check_ind_unusable.sh 10 8,12,16 * * * /data/app/scripts/monitor/check_maxfilesize.sh 10 8,12,16 * * * /data/app/scripts/monitor/check_objectsize.sh 43 21 * * * 每天的21:43执行 15 05 * * * 每天的05:15执行 0 17 * * * 每天的17:00执行 0 17 * * 1 每周一的17:00执行 0,10 17 * * 0,2,3 每周日,周二,周三的17:00和 17:10执行 0-10 17 1 * * 每月1日从17:00到7:10 毎隔1分钟执行 0 1 * * * 1:00执行 0 */1 * * * 毎时0分 每隔1小时 执行 0 * * * * 毎时0分 每隔1小时 执行 2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02 执行 30 5 1,15 * * 1日 和 15日的 5:30 执行

四、创建自定义的crontab命令
①示例:如果我希望每隔一分钟执行某个任务,
…
