计划任务:at和crontab
一、概述
作为一名运维人员,你经常需要将某些命令或脚本放入计划任务中去执行。例如,服务器在白天的访问量一般较大,而服务器在承受巨大访问压力的同时对其进行全备份是不合适的,这时候就可以考虑将备份工作放入系统计划任务,这样系统就可以在夜间访问量小的时候自动执行备份任务。
Linux中提供两种计划任务:(1)一次性at计划任务 (2)可以周期性执行的cron计划任务
二、at一次性计划任务
使用at制定一次性计划任务前要确保atd服务是开启的,否则计划任务不会被执行,使用systemctl start atd开启服务,并使用systemctl enable atd确保该服务开机启动。
2.1at命令用法
-m 当计划任务执行结束后发送邮件给用户
-l 查看用户计划任务
-d 删除用户计划任务
-c 查看at计划任务具体内容
at命令时间格式:(1)at 小时 :分钟 #默认代表当天时间 (2)at 4pm + 3days #代表3天后的下午4点执行计划任务
(3)at 12:00 2019-12-12 #指定年月日和日期的计划任务
2.2at案例
#指定在21:40执行计划任务,既在/目录新建一个test.txt文件并写入数据hello world。可以输入多条命令,输入完毕后按Ctrl+D快捷键保存并退出。
#执行打包计划任务
#查看、删除计划任务
三、cron周期性计划任务
使用cron制订计划任务前需要确保crond服务是开启的,否则计划不会被执行,使用systemctl start crond开启服务,并使用systemctl enable crond确保该服务开启启动。
3.1crontab命令用法
-u 指定计划任务的用户,默认为当前用户
-l 查看计划任务
-r 删除计划任务
-e 编辑计划任务
-i 使用-r删除计划任务时,要求用户进行确认
计划任务文件格式:分-时-日-月-星期-命令
分:00~59 时:00~23 日:1~31 月:1~12 星期:0~7
3.2cron案例
进入cron计划任务文件编辑界面,操作和vim相同。
#给用户Alex制定任务计划:4月19号22点30分执行echo "hello world" > /test/test.txt
#给用户Alex制定任务计划:每个星期5的22点30分执行tar -cvzf log.tar.gz /var/log /test
其实,CentOS系统自定义了很多计划任务脚本,分别存放在/etc下的cron.hourly、cron.daily、cron.weekly等目录中,如果你有脚本需要每天执行,可以直接将脚本存放在cron.daily中,系统会自动帮你每天运行该脚本。
#删除计划任务,如果只是某一条或者几条计划不想执行,也可以在计划任务编辑文本中直接用#注释。