计划任务:根据自己的时间计划去执行指令或者执行脚本,让计算机到时间自动运行。
分类:
》 一次性计划任务 at (服务名为atd) 软件名为at
》周期性计划任务分为两种:1、crontab -e ,2、/etc/crontab
============ 一次性计划任务 ======================
RHEL 7 systemctl start atd 临时启动服务 systemctl enable atd 开机自启动设置方法:相对计时法now + n minutes n分钟后now + n hours n小时后now + n days n日后now + n weeks n周后例如:#一分钟后输出“2222..”到终端pts0 ,按ctrl+d完成输入[root@class2 ~]# at now +1 minutesat> echo "2222222222" > /dev/pts/0at> <EOT>job 1 at Wed Dec 6 08:05:00 2017Can't open /var/run/atd.pid to signal atd. No atd running?绝对计时法:例如:17:30执行任务输出“2222..”到终端pts0 ctrl+d结束输入[root@class2 ~]# at 17:30at> echo "2222222222" > /dev/pts/0at> <EOT>相关配置文件:/var/spool/at/a000110154c7d2 #at目录下都是计划任务可执行程序,记录和保存所有用户的计划任务,执行完成之后,文件消失。也可以在这里直接删除对应的执行文件,达到删除任务效果/etc/at.allow #允许使用at的用户 在里面直接添加用户名/etc/at.deny #禁止使用at的用户 在里面直接添加用户名相关命令:at -l #查看和管理系统中的计划任务 每个任务对应一个序号at -c 18 #查看序号为18的任务的详情,主要看最后的部分。at -d 17 #删除序号为17的任务
===============周期性计划任务==========================
1、使用命令:crontab -e 【user】
说明:这是个人周期计划任务,不写默认为当前用户的计划任务,/var/spool/cron/目录下会有以用户名命名的文件用于存放计划任务
格式:(“分时明星”,这样记忆方便一点)* * * * * /bin/bash /test/apache.s分钟 小时 日 月 星期 执行命令时间范围 0-59 0-23 1-31 1-12 0-6可用的连接符号, 和 不连续- 到* 每/ 每隔 ;这里 * 写法等价于 */1
实例:=========================
==1、apache服务器上,要求,""每"" 天凌晨 4点钟 4:00 , 备份 /data -→ /backup+
0 4 * * * cmd
==2、周二 “”和“” 周五,的下午6:00点,备份一次
0 18 * * 2,5 command 非连续时间,用 , 号分割
==3、1月份 “”到“” 3月份,周二和周六,下午6:00点,备份一次
0 18 * 1-3 2,6 command 连续时间段,- 标识
==4、每天14到18点之间,每 “”隔“” 10分钟,备份一次
*/10 14-18 * * * command 隔 -- */N
==5、每天14点到18点之间的 “”第“” 10分钟 执行一次
10 14-18 * * * command
解析 ### 10 14-18 * * * command
14:10 15:10 16:10 17:10 18:10
== 6、3月份到6月份,和9月份到12月份,周一到周五,中午的12点到14点,每2分钟运行一次 command
*/2 12-14 * 3-6,9-12 1-5 command
crond -- 服务程序
crontab -- 配置工具。
/usr/lib/systemd/system/crond.service 服务启动脚本位置systemctl start crond #启动 RHEL6 : service crond start
systemctl enable crond #开机自启 RHEL6 : chkconfig crond oncrontab 的任务文件保存的位置:==================================crontab -e 先写入缓存,保存的时候系统检查没有语法错误,会将新任务写入到/var/spool/cron 目录下,以用户名命名的同名文件中。查 看系统中的crontab任务:======================================只有管理员能操作crontab -u new1 -l 查看new1用户的任务crontab -u new1 -e 编辑new1用户的任务限制用户使用crontab命令:=======================================/etc/cron.allow #允许使用crontab命令的用户/etc/cron.deny ##拒绝使用crontab命令的用户
2、vim /etc/crontab
说明:系统级别的计划任务比crontab级别高,一般用这种方法来运行备份打包,关键是有run-parts执行目录下脚本。
注意:
两种方式:
* * * * * root /test/dir1/test.sh ####执行单个任务,以root用户运行
* * * * * root run-parts /test/dir1 ###运行目录下的所有可执行程序,以root用户运行
举例:* * * * * root /bin/echo "111111111" > /dev/pts/0 (直接写命令)* * * * * root /test/dir1/test.sh (运行单个脚本)* * * * * root run-parts /test/dir1 (运行目录下的所有可执行程序)
如果系统断电或者宕机,错过任务执行的时间,怎么办?
anacron 任务:
是cron服务的扩展,配合cron服务一起使用,当系统断电或者宕机,错过任务执行的时间时,系统启动后它会再次执行未执行的任务。
配置文件:/etc/anacrontab
#period in days delay in minutes job-identifier command
命令执行的频率(天数) 延迟时间(分钟) 任务描述 要执行的命令
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
说明:
对于每个计划任务,anacrontab先判断在period(执行频率)期间内是否被执行了,如果没执行则等待delay(延迟时间),再次执行该任务。一般情况下该文件不用修改,知道原理就可以。