如何使用 crontab 管理 Linux 的任务计划

crontab 是 Linux 下常见的任务计划管理工具,可以通过修改 crontab 的配置文件控制我们需要运行的任务。

crontab 配置文件位于 /etc/目下,并有以下几个子目录。
crontab          配置 crontab 的执行环境,包含 PATH 等环境变量
cron.d/          
cron.hourly/       按小时(hourly)运行的任务计划
cron.daily/        按天(daily)运行的任务计划
cron.monthly/      按月(monthly)运行的任务计划
cron.weekly/       按周(weekly)运行的任务计划
/etc/cron.deny     配置用户不允许使用 Crontab命令
/etc/cron.allow    该文件中所列的用户允许使用Crontab命令
/var/spool/cron/   是所有用户的crontab文件
如果任务不以 hourly monthly weekly 方式执行,则可以将相应的 crontab 写入到 crontab 配置文件或添加到 cron.d 目录中。

任务定义格式
开头为 # 的行是注释
每一个子段用空格隔开

 .-------------------------- 分钟 (0 - 59)
 |  .----------------------- 小时 (0 - 23)
 |  |  .-------------------- 每月中的第几天 (1 - 31)
 |  |  |  .----------------- 月份 (1 - 12) 或者 jan,feb,mar,apr ...
 |  |  |  |  .-------------- 星期 (0 - 6) (星期天=0 或者 7) 或者 sun,mon,tue,wed,thu,fri,sat
 |  |  |  |  |   .---------- 运行此任务的用户(此字段可以省略)
 |  |  |  |  |   |     .---- 需要执行的命令
 |  |  |  |  |   |     |
 |  |  |  |  |   |     |
 *  *  *  *  * 用户名  命令

前五个字段中
星号(*)可以用来代表所有有效的值。如:月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(-)指定一个整数范围。如:1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。如:3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。如:*/3 的值可以用在月份字段中表示每三个月运行一次任务。

Crontab命令的格式为:
crontab –l|-r|-e|-i [username]
参数含义:

-l     显示用户的Crontab文件的内容
-i     删除用户的Crontab文件前给提示
-r     从Crontab目录中删除用户的 Crontab 文件
-e     编辑用户的Crontab文件,这些文将存储到 /var/spool/cron/username 的配置文件中

举例:
1、7月1日12点15分 更新系统
15 12 1 07 * /usr/bin/yum update -y

2、每天的 1点和13点执行备份
0 1,13 * * * /home/zpz/bin/backup

3、么天的 1点至 5点整点开始时更新网站数据
0 1-5 * * * /home/site/bin/update

4、工作日的上班时间发送邮件
0 09-17 * * 1-5 /home/site/bin/sendmail

5、分隔 5分钟执行一次 fetch.sh
*/5 * * * * /home/site/bin/fetch.sh

6、每月的开始执行 monthly-job.sh
@monthly /home/zpz/bin/monthly-job.sh

同理可以使用
@yearly 每年第一分钟
@daily 每天开始时
@reboot 每次系统重启时

One Trackback

  1. […] crontab命令可以帮助我们定制任务计划,如何使用 crontab 管理 Linux 的任务计划,我们可以通过 crontab -l 来获取当前账户的任务计划信息。 […]

Post a Comment

Your email is never shared. Required fields are marked *

*
*