一、简介
(1)作用:
(2)一次性调度执行 at
(3)循环调度执行 cron
二、一次性调度执行at
1.程序安装(默认已经安装)
在系统光盘中。
#rpm -ivh at.x86_64 //安装
#systemctl start atd //启动
#systemctl status atd //查看
Active: active (running) //运行中 inactive是不活跃就是没有运行。
2.语法格式
#at now +5min //五分钟后
#at noon +4 days //四天后中午
#at 5pm august 3 2018 //2018年8月3日下午5点
#at 16:00 2018-11-27 //2018年11月27日16点
#at 4pm + 3days //3天后下午4点
3.一次性任务计划例题
例1:
at> useradd uuuu
at> <EOT> //CTRL+D提交任务
job 1 at Sat Mar 21 22:34:00 2015
[root@localhost ~]# atq ----查询未执行的at任务
3 Thu Mar 30 09:55:00 2017 a root
稍等片刻。1分钟后。
[root@localhost ~]# id uuuu ------查询uuuu用户ID来判断用户是否通过at建立成功
例2:通过重定向,一次性导入多个任务
useradd u99
useradd u00
touch /`date +%F`.txt ---` `中的命令先执行
[root@localhost ~]# at now +1min < at.jobs
三 、循环调度执行cron
1.简介
crond的概念和crontab是不可分割的。crontab是一个命令,用于设置周期性被执行的指令,crond是它的守护进程。
查看进程的状态:
#systemctl status crond.server
#ps aux | grep crond
root 550 0.0 0.0 126300 1648 ? Ss 10:05 0:00 /usr/sbin/crond -n
2.用户级的计划任务
(1)计划任务的存放位置
#ls /var/spool/cron/
(2)管理方式;(针对当前登陆的用户)
2.1 创建计划(Edit)
#crontab -e
2.2 查询计划(List)
#crontab -l
#crontab -l -u username //管理员用来管理其他用户的计划任务
2.3删除计划(Remove)
#crontab -r
2.4高级管理-------拒绝用户执行计划任务。
在拒绝文件中添加用户名
/etc/cron.deny
alice
jack
测试:登录该用户,通过该用户创建计划任务
[alice@localhost ~]$ crontab -e //提示拒绝用户执行。
You (alice) are not allowed to use this program (crontab)
See crontab(1) for more information
(3)语法格式job format -----在/etc/crontab中
分 时 日 月 年
# .---------------- 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
# | | | | |
# * * * * * command
特殊例子:
00 02 * 6 5 ls //每年6月的周五2:00整 (特殊)
00 02 14 * 7 ls //每月14号2:00整 或者 每周日2:00整,这两个时间都执行
00 02 14 2 7 ls //每年2月14号2:00整 或者2月 每周日2:00整,这两个时间都执行
*/5 * * * * ls //每隔5分钟
00 02 1,5,8 * * ls //每月1,5,8号的2:00整
00 02 1-8 * * ls //每月1到8号的2:00整
3.系统级的计划任务
(1)简介
系统级任务计划作用:
临时文件的清理 /tmp 和 /var/tmp
系统信息的采集 sar
系统日志的轮转 logrotate
通常不是由用户定义
(2)定义位置一
定义系统的循环的任务计划------在/etc/crontab中按格式添加循环任务
#vim /etc/crontab //该文件中默认没有定义任何计划任务
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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
(3)定义位置二【anacron】
3.1简介:
1.以天为单位或者在启动后立刻进行anacron的动作
2.侦测停机期间应该进行但是并没有进行的crontab任务,如果有就将该任务执行一遍然后自动停止。
3.2运行周期
时,天,周,月
3.3工作原理
anacron会以一小时,一天、七天、一个月为期去侦测系统未进行的crontab任务,因此对某些特殊的使用环境(关机未执行)非常有帮助。
3.4示例
第一步 主程序:/etc/cron.d
命令:# ls /etc/cron*
第二步 主程序所调动的程序 : /etc/cron.d/0hourly
第三步 主程序所调动的程序anacron : /etc/cron.hourly/0anacron
第四步 调动了anacron程序
第五步 anacron程序的机制 -----命令anacrontab
第六步 观察日志,会发现时间戳(如果没有时间戳,可以通过命令【anacron -u 】 立刻触发该程序更新)
第七步:观察任务计划汇总日志(通过强制执行的命令【 anacron -f 】,可以立刻触发该程序)
2017-10-23
Oct 23 10:08:08 localhost anacron[15881]: Job `cron.daily' locked by another anacron - skipping
Oct 23 10:08:08 localhost anacron[15881]: Will run job `cron.weekly' in 59 min.
Oct 23 10:08:08 localhost anacron[15881]: Will run job `cron.monthly' in 79 min.
Oct 24 10:05:36 localhost anacron[15983]: Updated timestamp for job `cron.daily' to 2017-10-24
Oct 24 10:05:36 localhost anacron[15983]: Updated timestamp for job `cron.weekly' to 2017-10-24
Oct 24 10:05:36 localhost anacron[15983]: Updated timestamp for job `cron.monthly' to 2017-10-24
总结:
anacron程序是挽救系统中未及时完成的任务,用户一般不需要使用
anacron程序解释:
#anacron [-sfn] [job]
#anacron -u [job]
-s :开始一连续的运行各项工作,会依据时间记录档的数据判断是否进行。
-f :强制进行,而不去时间记录档
-n : 立刻进行未进行的任务,而不延迟 (delay) 等待时间;
-u :仅升级时间记录档的时间戳记,不进行任何工作。
job :由 /etc/anacrontab 定义的各项工