定时任务
# 定时任务
# 介绍
定时任务可用于定时自动执行操作,例如:夜里访问量不大时备份数据、自动清理磁盘、同步更新时间、定时对日志文件进行切割处理等。
系统定时任务文件
Linux系统中存在自带的定时任务文件,会安装周期定时执行,但是由于时间固定,无法定义不够灵活,所以很少使用。
/etc/cron.hourly
每小时执行一次。
/etc/cron.daily
每天执行一次。
/etc/cron.weekly
每周执行一次。
/etc/cron.monthly
每年执行一次。
# crontab命令
我们一般使用cronie软件包中的crontab命令进行定时任务的管理。
crontab用于设置周期定时任务,定时任务会依赖crond服务进行执行,所以需检查crond服务是否启动并设为自启。
命令格式:
crontab [参数]
crontab -i
查看用户定时任务。
crontab -e
编辑配置定时任务。
配置格式:
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6) 命令
星期的0表示星期日。
时间信息由左到右依次写,不能跳步。
日期和星期不要同时出现。
# *:表示每分钟/小时/日期/月份/星期都要执行。
## 表示每分钟执行一次。
* * * * *
## 表示小时的第5分钟执行一次。
5 * * * *
## 表示每天的2点5分执行一次。
5 2 * * *
# */n:表示每隔n"分钟/小时/日期/月份/星期"间隔执行。
## 表示每隔5分钟执行一次。
*/5 * * *
## 表示每隔3天就在2点执行一次。
0 2 */3 * *
# n/m:n规定时间范围,m规定间隔时间。
# n为*时 表示单位所有时间内,每隔多久执行一次。
# n为20时 则从20开始,m为每隔多久执行一次。
# n为1-10时 表示仅在1-10范围内进行间隔执行。
# n-m:表示n-m范围内连续的时间执行。
## 表示1/2/3点的每分钟都要执行一次。
* 01-03 * * *
# n,m:表示在不连续的时间执行。
## 表示1点整和3点整时都要执行一次。
00 01,03 * * *
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 编写规范
应当在编写的定时任务,上面一行加上注释说明。
应当想清楚今后什么时候执行任务。
编写后应当测试是否有效果或有问题。
命令应当使用绝对路径,因为定时任务会只在/user/bin和/bin中寻找命令。
命令中的文件路径尽量使用绝对路径。
命令尽量不要产生屏幕输出信息,可以将输出重定向到/dev/null中。不使用产生屏幕输出的参数,因为定时任务执行命令时 会将输出到屏幕的信息 发送到用户邮箱文件中 会占用磁盘空间。
命令需要使用特殊符号%时,前需要加上\转义才能使用,比如
date "+\%F"
。当完成一个任务需要两条及以上命令时,就需要编写脚本,运行脚本时需要
/bin/bash [脚本路径]
。
# 排错方法
检查是否有定时任务配置文件/var/spool/cron/[用户名]
。
检查定时任务的日志文件/var/log/cron
。
执行时间 主机名 编辑/执行定时任务 执行的用户 执行的操作
检查用户邮件/var/spool/mail/[用户名]
。
crontab会将命令的屏幕输出发送到用户邮箱文件内。