系统定时任务
-
at 一次性定时任务
确定at安装
chkconfig –list | grep atd:at服务是否安装
service atd restart:at服务的启动
at的访问控制
如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件会被忽略)
如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件(黑名单)中的用户不能使用at命令。对root不起作用。
如果系统中这两个文件都不存在,那么只有root用户可以使用at命令。
at命令
at [选项] 时间
选项:
-m:当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户。
-c 工作号:显示该at工作的实际内容
时间:
-HH:MM 02:30
-HH:MM YYY-MM-DD 02:30 2013-07-25
-HH:MM [am|pm] [month][date] 02:30 July 25
-HH:MM [am|pm] + [minutes|hours|days|weeks] now+5 minutesat now + 2 minutes #在两分钟之后执行hello.sh脚本 at> /root/hello.sh >> /root/hello.log
at 02:00 2013-07-26 #在指定的时间重启 at> /bin/sync; at> /sbin/shutdown -r now
atq #查询当前服务器上的at工作
atm [工作号] #删除指定的at任务
-
crontab 循环定时任务
crond服务管理与访问控制
service crond restart
chkconfig crond on
当系统中有/etc/cron.allow文件时,只有写入此文件的用户可以使用crontab命令,没有写入的用户不能使用crontab命令。同样如果有此文件,/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高。
当系统中只有/etc/cron.deny文件时,则写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令。
用户的crontab设置
crontab [选项]
选项:
-e:编辑crontab定时任务
crontab -e #进入crontab编辑界面。会打开vim编辑你的工作。*执行的任务。
第一个*:一小时当中的第几分钟 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分执行命令。
/n:代表每隔多久执行一次。比如“*/10 * * *命令”,代表每隔10分钟就执行一遍命令。
45 22 * * *命令:在22点45分执行命令
0 17 * * 1命令:每周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号,每周1的0点0分都会执行。注意:星期几和几号最好不要同时出现,我们定义的都是天。非常容易让管理员混乱。
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
crontab注意事项
六个选项都不能为空,必须填写。如果不确定使用”*”代表任意时间
crontab定时任务,最小有效时间是分钟,最大时间范围是月。像2018年某时执行,3点30分30秒这样的时间都不能识别。
在定义时间时,日期和星期最好不要在一条定时任务中出现。因为它们都是以天作为单位,非常容易让管理员混乱。
在定时任务中,不管是直接写命令,还是在脚本中写命令,最后都是用绝对路径。
-
系统的crontab设置
“crontab -e”是每个用户执行的命令,也就是说不同的用户身份可以执行自己的定时任务。可是有些定时任务需要系统执行,这是我们就需要编辑/etc/crontab这个配置文件了。
执行系统的定时任务的方法
手工执行定时任务
系统定时任务,包括以下两种:
第一种:需要把定时执行的脚本复制到/etc/cron.{daily,weekly,monthly}目录中的任意一个
第二种:修改/etc/crontab配置文件
-
anacron配置
anacron用来保证在系统关机的时候错误的定时任务,可以在系统开机之后再执行。
aracron检测周期
anacron会使用一天,七天,一个月作为检测周期
在系统的/var/spool/anacron/目录中存在,cron.{daily,weekly,monthly}文件,用于记录上次执行cron的时间
和当前时间做比较,如果两个时间的差值超过了anacron的指定时间差值,证明有cron任务呗漏执行
CentOS 6.x的区别
在老的CentOS版本中,/etc/cron.{daily,weekly,monthly}这些目录即会被cron调用,也会被anacron调用,容易重复执行
在CentOS 6.x中则只会被anacron调用,避免了重复执行
在CentOS 6.x中,anacron不再是服务,而是系统命令
anacron配置文件
vi /etc/anacrontab
-RANDOM_DELAY = 45 #最大随机延迟
-START_HOURS_RANGE=3-22 #anacron的执行时间范围是3:00-22:00
# 天数 强制延迟(分) 工作名称 实际执行的命令
cron.daily工作来说明执行过程
1)首先读取/va/spool/anacron/cron.daily中的上一次anacron执行的时间;
2)和当前时间比较,如果两个时间的差值超过1天,就执行cron.daily工作;
3)执行这个工作只能在03:00-22:00之间
4)执行工作时强制延迟时间为5分钟,再随机延迟0-45分钟时间
5)使用nice命令指定默认优先级,使用run-parts脚本执行/etc/cron.daily目录中的所有可执行文件