多语言展示
当前在线:351今日阅读:113今日分享:31

计划任务服务程序

厉害的系统运维工程师能够让Linux系统实现自动化工作,无需人工的干预就可以让各个服务、命令在指定的时间段执行、服务或停止。更何况咱们已经有了如此彪悍的脚本程序,如果只是需要每天凌晨两点敲一下回车去执行这个Shell脚本程序,这样的工作简直就是痛苦死了(或者训练您家的小猫半夜按下回车键)。刘遄老师接下来教给同学们如何来设置服务器的计划任务服务,把有周期规律性的工作交给系统去自动完成。计划任务有“一次性”与“长期性”的区分。详情请关注《linux就该这么学》。
工具/原料

一台装有RHEL 7.0操作系统的电脑

方法/步骤
1

一次性计划任务顾名思义就只是一次性有效,一般用于临时的工作需要,咱们可以用at命令实现这种功能,只需要写成'at 时间'的形式就可以,如果想要查看已设置好但还未执行的计划任务可以用'at -l'命令,而删除的话可以用'atrm 任务序号'即可,默认用at命令来设置计划任务的话是通过交互式的方法,例如设置系统在今晚23:30分自动重启网站服务吧:[root@linuxprobe ~]# at 23:30 at > systemctl restart httpd at > 此处请同时按下Ctrl+d来结束编写计划任务 job 3 at Mon Apr 27 23:30:00 2015 [root@linuxprobe ~]# at -l 3 Mon Apr 27 23:30:00 2016 a root当然如果您想挑战一下更加高难度但又简便的方式,可以把前面章节中学习的管道符(任意门)放到两条命令之间,让at命令接收前面echo命令的输出信息,以达到通过非交互式的方式创建计划任务,这样的话在Shell脚本中都可以做引用了~[root@linuxprobe ~]# echo 'systemctl restart httpd' | at 23:30 job 4 at Mon Apr 27 23:30:00 2015 [root@linuxprobe ~]# at -l 3 Mon Apr 27 23:30:00 2016 a root 4 Mon Apr 27 23:30:00 2016 a root如果一不不小心设置了两条,想要删除其中一条的话也是很简单的:[root@linuxprobe ~]# atrm 3 [root@linuxprobe ~]# at -l 4 Mon Apr 27 23:30:00 2016 a root

2

而如果您的工作需要是有周期规律性的,那Linux系统中默认启用的crond服务简直再适合不过了,创建、编辑计划任务的命令为'crontab -e',查看当前计划任务的命令为'crontab -l',删除某条计划任务的命令为'crontab -r',另外如果您登录的是超级用户的话,还可以通过加上-u参数来编辑其他人的计划任务。不过在正式的部署计划任务前,请先跟刘遄老师念一下口诀“分、时、日、月、星期 命令”,这是使用crond服务设置任务的参数格式,没有设置的位置也要用*号占位,如图所示:

3

参考上面crond计划任务实现的参数格式,假设目前每周一、三、五的凌晨3点25分都需要把某个网站数据目录通过tar命令打包成一个压缩包来当做备份文件,那么除了用减号(-)来表示一段连续的时间周期,例如12-15就可以代表每月的12-15日,除号(/)代表任务的间隔时间,例如/2就是每隔2分钟执行一次的意思,还可以用逗号(,)来分别表示多个时间段,如8,9,12来代表八月、九月和12月执行任务,那么来尝试做一下吧:[root@linuxprobe ~]# crontab -e no crontab for root - using an empty one crontab: installing new crontab [root@linuxprobe ~]# crontab -l25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot而如果计算机服务器中需要有多条计划任务,并且这次的工作是每周一至五的每天的凌晨1点钟清空/tmp临时目录中的所有文件,就可以把相应的参数依次写到下面。而在crond服务的计划任务参数中所有的命令请一定要用绝对路径的方式来写,如果不知道的话用whereis命令来查下吧:[root@linuxprobe ~]# whereis rm rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz [root@linuxprobe ~]# crontab -e crontab: installing new crontab [root@linuxprobe ~]# crontab -l 25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot0 1 * * 1-5 /usr/bin/rm -rf /tmp/*

推荐信息