linux定时任务:
未来的某个时间执行一次任务,或者周期性执行某个任务,执行结果会通过邮件通知。
定时任务:at batch
周期性任务:crontab
系统任务调度:
/etc/crontab
用户任务调度
/var/spool/cron
mail l
mail -s “邮件主题” -c "抄送地址" -b “密送地址” -f 发送人地址 -F 发件人姓名 <
echo "test" | mail -s test nebulalinux03
at:
1、时间定义
hh:mm 12:00
noon teatime
AM PM 8am 9pm
2019-8-11 2019/8/11
+ 5 minutes hours days weeks
today tomorrow
2、语法结构
at 选项 参数
-q 列出任务
-f 从文件中读取
-l 列出任务
-d 指定删除
-v:列出已执行未删除的任务
-V:版本号
-c:查看作业内容
atq
atrm
cron命令
# .---------------- 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
时间表示法:
1、特定值
40 8 * * *
2、*
* 8 * * *
3、连续值
8-10 9-17
4、离散值
8,10,12
5、定义时间点 时间步长
/4
注意:定义步长需要能被整除
5 * * * * 每小时执行一次,每小时的第五分钟执行一次
3 4 * * 5 每周执行一次,
5 6 7 * * 每月执行一次,
7 8 9 10 * 每年执行一次
8 9 * * 3,4
0 8,9,20 * * 6,7
*/5 * * * * 每隔五分钟执行一次
crontab 语法结构:
crontab [-u user] [-l | -r | -e] [-i] [-s]
-e:编辑任务
-l:列出任务列表
-r:移除任务
-i:移除时确认,与-r一起使用
-u:
1,每一分钟执行一次commond
* * * * * commond
2,每小时的第3分钟和第15分钟执行一次command
3,15 * * * * commond
3,从早上的8点到12点的第3分钟和第15分钟执行一次command
3,15 8-12 * * * commond
4,每隔两天的上午11点到18点之间的第3分钟和第15分钟执行一次command
3,15 11-18 */2 * * commond
5,每晚18点重启网卡配置
0 18 * * * service network restart
6,每周天凌晨1点重启Apache服务
0 1 * * 7 service httpd restart
7,每小时重启一次command
0 * * * * service httpd restart
8,每月的4号与每周的周一到周五执行网卡重启
* * 4 * 1-5
9,每年的1月1号重启网卡
* * 1 1 *
10,每晚的11点到早上7点之间,每小时重启一次网卡
0 23-7 * * *
–定时任务规范:
1,脚本要规范,脚本存放位置要规范,便于维护
2,定时任务要写注释
3,执行的脚本要带绝对路径
4,执行结果的标准输出或者错误输出 >/dev/null
5,可以以命令完成的任务,也要写在脚本
6,分用户执行
anacron
anacron不是守护进程,可以看做是cron守护进程的某种补充程序,anacron是独立的linux程序,被cron守护进程或者其他开机脚本启动运行,可以每天、每周、每个月周期性地执行一项任务(最小单位为天)。适合于可能经常会关机的机器,当机器重新开机anacron程序启动之后,anacron会检查anacron任务是否在合适的周期执行了,如果未执行则在anacron设定好的延迟时间之后只执行一次任务,而不管任务错过了几次周期。举个例子,比如你设定了一个每周备份文件的任务,但是你的电脑因为你外出度假而处于关机状态四周,当你回到家中开机后,anacron会在延迟一定时间之后只备份一次文件。由于发行版的不同,cron守护进程如何运行anacron会有所不同。