CentOS计划任务详解

一、计划任务应用场景:

       需要每天对服务器上的数据进行备份,但是白天服务器的访问量较大,服务器承受着较大的压力,备份任务只能在夜晚服务器较空闲时才能进行。或者需要临时在某时间点执行一个任务等,都需要用到计划任务的功能。

二、计划任务分类:     

       一次性计划任务:at

       周期性计划任务:cron

三、一次性计划任务:

at [options]… Time 

       常用选项:

              -l:查看作业队列,相当于atq

              -d #:删除指定的作业,相当于atrm

              -f /path/from/somefile:从指定文件中读取作业,而不再使用骄傲胡输入

              -c #:查看指定作业的具体内容

              -q queue:指明队列

       Time可以使用以下格式表示:

              HH:MM[YYYY-mm-dd]

              noon,midnight,teatime

              tomorrow

              now +#:

                     Unit:Minutes,Hours,Days,Weeks

                     at now +1min:表示1分钟之后执行任务

                     at 04pm +3day:表示3天后的下午4点

例:在10:57在系统广播“hello”

注:要执行的的任务输入完成之后,使用ctrl + d键确认完成此计划。

blob.png

at任务的任务队列:

       at任务存放在/var/spool/at目录中

       默认为a队列,任务名以a开头。

blob.png

at任务的执行方式:

       at任务的执行依赖于atd服务,要使at任务能准时执行,需要保证atq服务开启,且最好设置为开机自启。

       service atd start

       chkocnfig atd on

       作业的执行结果是以邮件的形式发送给提交作业的用户,在执行at任务应尽量将输出重定向,避免产生过多的垃圾邮件。

控制普通用户能否创建at任务

       /etc/at.deny  #黑名单

              黑名单中的用户不允许创建at任务

       /etc/at.allow       #白名单,默认情况下,此文件未在系统中创建,需手动添加

              只允许在白名单中的用户执行at任务

       若不想让所有普通用户创建at任务

              1、删掉at.deny文件

              2、创建at.allow文件,文件内容为空

白名单优先级高于黑名单,白名单和黑名单拥有同一个用户,则以白名单为准

四、周期性计划任务

cron的服务程序为crond

       主程序包为cronie,提供crond守护进程及相关的辅助工具。

       crontab计划任务要能准时运行,需要确保crond守护进程(daemon)处于运行状态,且应设置为开机启动。

       在CentOS6和7启动任务时略有不同。

                     CentOS7

                            systemctl start crond

                            systemctl enable crond

                     CentOS6

                            service  crond  start

                            chkconfig crond on

cron任务计划分类:

       系统cron任务:主要用于实现系统自身的维护。

              编辑/etc/crontab完成任务定义

       用户cron任务:完成用户自定义的任务

              使用crontab命令定义任务

etc/crontab文件的配置格式:

blob.png

 分 时 日 月 周   Username  Command to be excuted"命令的绝对路径"

例:每天晚上9点10分运行echo命令

10 21 * * * centos /bin/echo "Howdy!"

注意:

       (1)、每一行定义一个周期性任务。

       (2)、此处的PATH环境变量不同于用户登陆后的环境变量

       (3)、执行结果以邮件的形式发送给指定用户,为避免产生过多的垃圾邮件,命令产生的输出应进行重定向处理。

 

时间表示法:

       (1)、特定值

              给定时间点有效取值范围内的值

       (2)、*

              给定时间点上有效取值范围内的所有值。表示”每…“

       (3)指定时间点上的离散取值

              在给定时间点上使用逗号分隔的多个值即可。

       (4)连续取值

              在时间点上使用“-”连接开头和结束

       (5)在指定时间点上,定义步长。

              /#: #即步长

注意:

       (1)指定的时间点不能被步长整除时,其意义将不复存在

       (2)最小时间单位为分钟,想完成秒级任务,需借助于其他机制。可定义成每分钟任务:再利用脚本实现每分钟之内,循环执行多次。

       (3)*  *  1,10,20  *  0,6

              这样的事件格式标识每月1号、10号、20号,以及每周六、每周日执行任务

例:

       (1) 3 * * * *:每小时第三分钟

       (2) 3 4 * * 5:每周5的4点的第3分钟

       (3) 5 6 7 * *:每月7日6点5分。

       (4) 7 8 9 10 *:每年第10月9号8点7分

       (5) 9 8,20 * * 3,7:每周三和周日的8点9分和20点9分

       (6) 1 9-18 * * 1-5;周一到周五的9点到18点每小时执行。

       (7) */5 * * * *:每5分钟执行一次

crontab命令:

       crontab [options]

              -u user

              -l (list)

              -e (edit)

              -r:移除所有任务

       crontab编辑时不指定用户,为编辑当前登录用户的计划任务;root可以编辑指定用户的计划任务。

       crontab -u gentoo -e       #编辑指定用户的计划任务

       crontab -u gentoo -l        #查看指定用户的计划任务

例:每周六凌晨0点5分备份/etc目录下的所有配置文件至/back目录下,命名为"etcbak-年月日-时.tar.xz“

5 0 * * 6 root /bin/tar -Jcf /etc/*.conf /backup/etcbak-`date +\%F-\%H`.tar.xz

注意:在crontab中,%具有特殊意义,若要在命令中使用%,需要转义

管理普通用户的计划任务权限

       /etc/cron.deny    #黑名单中的用户不能配置计划任务。

       /etc/cron.allow     #只有白名单中的用户可以配置计划任务。若白名单中未指定用户,则所有普通用户都不可配置计划任务。

白名单优先级高于黑名单

五、实战演练

1、每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd”

10 0  * * 0,2,4 root /bin/cp /log/message /logs/messages-`date %F`

2、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中

0 2 * * * root /bin/cat /proc/meminfo | /bin/grep '^[S|M].*' >> /tmp/meminfo.txt

注:在使用命令时,应通过which获取命令的绝对路径,再使用绝对路径。

原创文章,作者:M20-1钟明波,如若转载,请注明出处:http://www.178linux.com/44893

(1)
M20-1钟明波M20-1钟明波
上一篇 2016-09-09
下一篇 2016-09-09

相关推荐

  • centos6.9实现网卡bonding

    centos6.9实现网卡bonding 为什么要用bonding  将多块网卡配置同一IP地址实际中是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为相同的MAC地址,这样可以实现多块网卡绑定同一IP地址,对外提供服务。用于网络负载均衡和网络冗余。 工作模式  bonding的模式:0-6,即:7种模式,这里我们…

    2017-08-20
  • shell脚本编程练习

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态 在线的主机使用绿色显示 不在线的主使用红色显示 #!/bin/bash # for i in {1..254};do if ping -c 6 -w 1 192.168.1.$i &> /dev/null;then echo -e…

    2017-11-15
  • linux系统启动流程及内核编译

    Linux系统启动流程 initialization [ɪˌnɪʃəlaɪ'zeɪʃn] 初始化 内核参数: /usr/share/doc/kernel-doc-VERSION/Documentation 系统初始化流程(内核级别): POST –> BootSequence(BIOS) –> BootLoade…

    Linux干货 2016-09-19
  • grep &&正则表达式&&通配,元字,转义符

    grep 基于正则表达式的查询 1正则表达式: 正则表达式是通过使用特殊的字符所编写的模式,一些字符不表示字符的表面意思,具有控制和通配的功能. 使用正则表达式进行匹配具有两种方法:一是通过使用特殊的元字符进行字符匹配;二是使用次数匹配。 一, 正则表达式的特殊字符(元字符) :  #建议再温习一下之前所学的统通配符,对比一下,防止混淆。 (1)元…

    Linux干货 2016-08-05
  • 进程的简单概念

    什么是进程?进程是载入内存的一个指令集合。 PID代表进程号, centos7之前的第一个进程都为inet。centos7的第一个位systemd 进程优先级分为系统优先级和实时优先级,系统优先级0到139表示,值越大优先级越低。centos6用0到98表示值越大优先级越低 实时优先级用99到0表示,值越大优先级越高。 进程类型:守护进程和前台进程。(俩者可…

    Linux干货 2017-05-08
  • 课堂练习及课后作业(0805文本处理工具)

    课堂练习: 1、找出ifconfig命令结果中本机的所有IPv4地址 2、查出分区空间使用率的最大百分比值 3、查出用户UID最大值的用户名、UID及shell类型 4、查出/tmp的权限,以数字方式显示 5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序 grep 1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式…

    Linux干货 2016-08-07

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-10 14:15

    文章思路清晰,层次分明,有理论也有实践,很值得学习的一篇博客。