Linux计划任务

Linux任务计划

Linux任务计划、周期性执行任务
未来某一时间点执行一次任务:at,batch
周期性计划任务:crontab
    默认执行结果会通过邮件形式发送给用户

本地电子邮件服务

smtp:Simple Mail Transfer Protocol,既简单邮件传输协议,主要用于发送邮件
pop3:Post Office Protocol,邮局协议,用于收取邮件
IMAP4:Internet Mail Access Protocol,互联网邮件访问协议,其功用和pop3一致

mail命令:
    用于发送或接收互联网邮件
        MUA:Mail User Agent,用户收发邮件的工具程序

        mailx [-s "SUBJECT"] username[@hostname]
            邮件正文的生成:
                (1)交互式输入:.单独成行可以表示正文结束;Ctrl+d提交
                (2)输入重定向:
                (3)通过管道;

_[$V]1`UC0C9PAVE48O`[)N.png

7Z5MIMH1BOCJVHD5P2`(ZX9.png

at命令

at [OPTIONS...] TIME
常用选项:
    -l:显示作业队列,相当于atq
    -d:删除指定队列,相当于atrm
    -c:查看作业的详细内容
    -m:当任务完成之后,将发邮件给用户,即使没有标准输出
    -V:显示版本信息
    -f /PATH/TO/SOMEFILE:

    注意:作业执行结果是以邮件发送给提交作业的用户

TIME:定义出什么时候进行at 这项任务的时间
    HH:MM 02:00
        在今日的HH:MM 进行,若该时刻已过,则明天此时执行任务
    HH:MM YYYY-MM-DD 04:00 2016-09-20
        规定在某年某月的某一天的特殊时刻进行该项任务
    noon, midnight, teatime(4pm)
    tomorrow
    now+#{minutes,hours,days, OR weeks}
        在某个时间点再加几个时间后才进行该项任务

at的作业有队列,用单个字母表示,默认都是用a队列

执行方式:
    1.交互式输入
    2.输入重定向,从指定文件中读取
    3.at -f /PATH/TO/SOMEFILE指定文件

at依赖于atd服务,需要启动atd服务才可运行at任务
at队列存放在/var/spool/at目录当中

at权限控制

/etc/at.{allow,deny}用于控制用户是否能执行at任务
    白名单:/etc/at.allow默认不存在,只有该文件中的用户才可执行at任务
    黑名单:/etc/deny拒绝该文件中用户执行at命令,而没有在at.deny文件中的用户则可执行

注意:如果at.deny和at.allow文件中同时定义了一个用户,则at.allow文件优先生效
注意:如果两个文件都不存在,则只有root用户才可执行at任务;或者at.allow文件存在且没有指定任何用户

周期性计划任务:crontab

服务程序:
    cronie:主程序包,提供了crond守护进程及相关辅助工具;

确保crond守护进程(daemon)处于运行状态;
    CentOS 7:
        systemctl status crond.service
    CentOS 6:
        service crond status
向crond提交作业的方式不用于at,它需要使用专用的配置文件,此文件有固定格式,不建议使用文本编辑器
    直接编辑此文件;要用crontab命令

cron任务分为两类:
    系统cron任务:主要用于实现系统自身的维护
        手动编辑:/etc/crontab文件
    用户cron任务:
        命令:crontab命令

    日志文件:/var/log/cron

系统cron的配置格式:/etc/crontab
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    # 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
    

    注意:
        (1)每一行定义一个周期性任务;
            * * * * *:定义周期性时间
            user-name:运行任务的用户身份
            command to be executed:任务
        (2)此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量
        (3)执行结果邮件发送给MAILTO指定的用户


用户cron的配置格式:/var/spool/cron/USERNAME
    # 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    

    注意:
        (1)每行定义一个cron任务,共6个字段;
        (2)此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量
        (3)邮件发送给当前用户


时间表示法:
    (1)特定值;
        给定时间点有效取值范围内的值;
            注意:days of week和day of month一般不同时使用
    (2)*
        给定时间点上有效取值范围内的所有值;表"每..."
    (3)离散取值:
        在时间点上使用逗号分隔的多个值;
            #,#,#
    (4)连续取值:-
        在时间点上使用-连接开头和结束
            #-#
    (5)在指定时间点上,定义步长:
        /#:#即步长;

        注意:
            (1)指定的时间点不能被步长整除时,其意义将不复存在
            (2)最小时间单位为"分钟",想完成"秒"级任务,得需要借助额外其它机制
               定义成每分钟任务:而在利用脚本实现在每分钟内,循环执行多次

示例:
    3 * * * *:每小时的第3分钟执行任务
    4 5 * * *:每天的5点4分执行任务
    3 4 * * 5:每周5的4点3分执行任务
    5 6 7 * *:每月的7号的6点5分执行任务
    7 8 9 10 *:每年的10月9号8点7分执行任务
    0 8,20 * * 3,7:每周3和周日的8点和20点执行任务
    0 9-18 * * 1-5:周1到周5的9点至18点钟执行任务
    */5 * * * *:每五分钟执行

crontab命令:
    crontab [-u user] [-l | -r | -e] [-i] [-s]
        -e:编辑计划任务
        -l:查看计划任务
        -r:清空计划任务
        -i:交互式,当使用-r选项时,提示用户是否继续
        -u USER:root用户可为指定用户配置cron任务

注意:运行结果以邮件通知给当前用户;如果拒绝接收邮件
    (1)COMMAND > /dev/null
    (2)COMMAND &> /dev/null

注意:定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%号不用转义

控制用户执行cron

/etc/cron.deny:黑名单,此文件中所定义的用户均不可执行cron任务
/etc/cron.allow:白名单,只有在此文件中定义的用户才可执行cron任务
    白名单优先级要高于黑名单,默认白名单不存在,如果存在,则只有白名单里定义的用户才可执行计划任务
    如果两个文件都不存在,则只有root用户才肯执行cron任务

原创文章,作者:zhai796898,如若转载,请注明出处:http://www.178linux.com/46514

(0)
zhai796898zhai796898
上一篇 2016-09-14
下一篇 2016-09-14

相关推荐

  • DHCP

    DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。 DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动…

    Linux干货 2016-11-07
  • 文本处理工具

    文本处理工具 文件内容:less和 cat,more文件截取:head和tail文本内容处理:tr按列抽取:cut按关键字抽取:grep 文件查看命令:cat, tac,rev cat  复制标准输入到当前输出 语法:cat [OPTION]… [FILE]…选项: -E: 显示行结束符$ -n: 对显示出的每一行进行编号 -A:显示所有…

    Linux干货 2016-08-07
  • Linux文件权限管理及目录文件的深入理解。

    文件权限及目录 初学Linux,感觉这个东西该复杂,而且逻辑非常的强。难~! 自己根据学习到的理论和实践,得出的对文件权限,进程,以及特殊权限的深入理解。希望能解决初学者对于权限的困惑。如有错误请指正。 文件的权限,指定的是什么? 是文件的权限位上的权限,针对三类用户,任何用户都必须是三类用户中的一种,属主属组和其他人的权限rwx   &…

    Linux干货 2016-08-10
  • Linux之启动和内核管理

     Linux之启动和内核管理     本文主要包括以下内容一  CentOS 5和6的启动流程二  服务管理三  Grub管理四  自制Linux五  启动排错六  编译安装内核   Linux组成Linux: kernel+rootfskernel: 进程管…

    Linux干货 2016-09-15
  • linux文件管理类命令汇总及几个通配的查找事例

    linux文件管理类命令汇总 1.文本文件查看类命令:cat,tac,more,less,tail,head cat(tac): 正向(反向)显示 cat [OPTION]… [FILE]…                -E:显示行结束符$ -n:对显示出的每一行进行编…

    Linux干货 2016-09-24
  • MBR分区结构

    MBR分区结构 一、硬盘主引导记录MBR由4个部分组成: 1、主引导程序(偏移地址0000H–0088H),它负责从活动分区中装载,并运行系统引导程序。 2、出错信息数据区,偏移地址0089H–00E1H为出错信息,00E2H–01BDH全为0字节。 3、分区表(DPT,Disk Partition Table):含4个分…

    2017-08-20