在实际工作中,系统的定时任务一般都是需要重复执行的,这就需要使用 crontab 命令来执行循环定时任务。而crontab 命令需要crond服务支持,crond是在Linux下用来周期性的执行某些任务的一个守护线程。和Windows中的计划任务类似。而这种系统在某个时间执行特定的命令或程序就是任务调度。
Linux下任务调度可分为两类:
系统任务工作调度:系统周期性所要执行的工作。如:写缓存数据到硬盘、清理日志等。
用户任务调度:用户定期要执行的工作。如:数据库的备份。
-
crontab [选项] 常用选项: -e : 编辑crontab定时任务 -l : 查询crontab任务 -r : 删除当前用户所有的crontab任务 service crond restart -----重启任务调度
实例: 每分钟执行 详细遍历 etc 目录下的文件 并将遍历信息写入另外一个文件
以上步骤详细解释:
1> 执行 crontab -e 命令,打开一个空文件,操作方式和 vi 类似。
2> 将任务( */1 * * * * ls -l /etc >> home/liang/Linux_Study/to.txt )输入到调度文件 。保存调度文件并退出。
3> 至此后,每一分钟都会自动的调用 ls -l /etc >> home/liang/Linux_Study/to.txt。
crontab -e 命令时每个用户都可以执行的命令,不同的用户可以执行自己的定时任务,这就是用户任务调度 。 这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。
5个“*”占位符的具体含义
项目 | 含义 | 范围 |
---|---|---|
第一个“*” | 一小时当中的第几分钟 | 0~59 |
第二个“*” | 一天当中的第几小时 | 0~23 |
第三个“*” | 一个月当中的第几天 | 1~31 |
第四个“*” | 一年当中的第几个月 | 1~12 |
第五个“*” | 一周当中的星期几 | 0~7(0和7都代表星期日) |
时间特殊符号
特殊符号 | 含义 |
---|---|
*(星号) | 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。 |
,(逗号) | 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。 |
-(中杠) | 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。 |
/(正斜线) | 代表每隔多久执行一次。比如"/10***命令",代表每隔 10 分钟就执行一次命令。 |
crontab举例
时间 | 含义 |
---|---|
45 22 ***命令 | 在 22 点 45 分执行命令 |
0 17 ** 1命令 | 在每周一的 17 点 0 分执行命令 |
0 5 1,15**命令 | 在每月 1 日和 15 日的凌晨 5 点 0 分执行命令 |
40 4 ** 1-5命令 | 在每周一到周五的凌晨 4 点 40 分执行命令 |
*/10 4 ***命令 | 在每天的凌晨 4 点,每隔 10 分钟执行一次命令 |
0 0 1,15 * 1命令 | 在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆 |
系统crotab设置
需要系统来执行的任务,需要我们去编辑 /etc/crontab 配置文件,CentOS7的配置文件如下图: