任务计划
未来某一时间点执行一次任务
at 指定时间点,执行一次任务
batch 系统自行选择空闲时间执行此处指定的任务
周期性运行任务
cron
at [option] TIME
-l:列出指定队列中等待运行的作业;相当于atq
-d:删除指定的作业;相当于atrm
-c:查看具体作业任务
-f /file:指定的文件中读取任务
TIME:定义什么时候进行at这项任务的时间
HH:MM[YYYY-mm-dd]
touch /data/file1 > at 14:10
执行方式:
1,交互式
2,输入重定向
3,at -f 文件
at队列存放在/var/spool/at目录中
控制用户是否能执行at任务:
/etc/at.{allow,deny}
at依赖于atd服务
周期性任务计划cron
相关的程序包:
cronie:主程序包,提供crond守护进程及相关辅助工具
cronie-anacron:cronie的补充程序,用于监控cronie任务执行状态,如果任务在过去该运行的时间点没有正常运行,则anacron会随后启动一次次任务
系统cron任务:系统维护作业 /etc/crontab
用户cron任务:crontab命令
日志:/var/log/cron
# 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
10 21 * * * root /bin/echo "Howdy"
晚上9点10分运行echo命令
时间表示法:
1,特定值
2,*
3,离散取值 #,#,#
4,连续取值 #-#
5,定义步长 /#:#即为步长
时间格式:
@reboot 重新启动后运行一次
@yearly
系统的计划任务:
/etc/crontab 配置文件
/etc/cron.d/ 配置文件
/etc/cron.hourly/ 脚本
/etc/cron.daily/ 脚本
/etc/cron.weekly/ 脚本
/etc/cron.monthly/ 脚本
anacron系统
配置文件:/etc/anacrontab,负责执行/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly中系统任务
1 5 cron.daily nice run-parts /etc/cron.daily
字段1:如果在这些日子里没有运行这些任务
字段2:在重新引导后等待这么多分钟后运行它
字段3:任务识别器,在日志文件中标识
字段4:要执行的任务
管理临时文件
CentOS7使用systemd-tmpfiles-setup服务实现
CentOS6使用/etc/cron.daily/tmpwatch定时清除临时文件
crontab [-u user =] [-l|-r|-e][-i]
-l:列出所有任务
-e:编辑任务
-r:移除任务
-i:以交互式模式移除指定任务
控制用户只需计划任务:
/etc/cron.{allow,deny}
运行结果的标准输出和错误以邮件通知给相关用户
(1) > /dev/null
(2) &> /dev/null
%有特殊用途;如果在命令中要使用%,需要转义,放置在单引号中,则可不用转义
/usr/bin/run-parts:一次性运行文件夹中的脚本
* * * * * /usr/bin/run-parts /data/scripts --每分钟运行一次/data/scripts目录下的所有脚本
(1)如何在秒级别运行任务?
sleep 0.1
usleep 1000 微秒
每6秒执行一次
方法一:小脚本实现
#!/bin/bash
while :;do
/var/script/run.sh
sleep 6
done
方法二:
* * * * * sleep 6;/var/script/run.sh >> log.txt