Linux任务计划

Linux任务计划,周期性任务执行

        未来的某时间点执行一次某任务:at, batch

         周期性运行某任务:crontab

                 执行结果:

             ~]# netstat -tnlp

             ~]# ss -tnl

     本地电子邮件服务:

             smtp: simple mail transmission protocol

             pop3: Post Office Procotol

             imap4: Internet Mail Access Procotol

             mail命令:

             mailx – send and receive Internet mail

             MUA:Mail User Agent,用户收发邮件的工具程序;

             mailx [-s 'SUBJCT'] username[@hostname]

     邮件正文的生成: 

            (1) 交互式输入:单独成行可用标识正文结束;Ctrl+d提交亦可;

            (2)通过输入重定向;

            (3)通过管道:

        at 命令:

             at [OPTION]….TIME

             TIME:

              HH:MM [YYYY-mm-dd]

              noon,  midnight, teatime

              tomorrow 

               now+# 

              UNIT:minutes, hours,days,or weeks

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

        常用选项:

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

           -f: /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;

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

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

           -q: QUEUE:指明队列;

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

               batch命令:

               batch命令会让系统自行选择在系统资源交空闲的时间去执行指定的任务;

          周期性任务计划:cron

             服务程序:

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

             确保crond 守护进程(daemon)处于运行状态:

         Centos 7 :

              systemctl satus crond.service

              Active:active (running)….

        Centos 6 :

             service crond status

              …is running

       向crond提交作业的方式不同于at,它需要使用专用的配置文件,次文件有固定格式,不建议使使用文本编辑器直直接编辑此文件;要使用crontab命令;

       cron任务分为两类:

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

            用cron任务:/etc/cron/tab

            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:运行任务的用户身份

         (2)此时的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝路径,或者自定义PATH环境变量;

         (3)执行结合邮件发送给AMAILTO指定的用户;


    用户cron的配置格式:/var/spool/cron/USERNAME

          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

          # |  |  |  |  |

          # *  *  *  *   command to be executed

   注意:

      (1)每行第那样一个cron任务,共6个字段;

      (2)  此时的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝路径,或者自定义PATH环境变量;

      (3)邮件发送给当前用户;

  时间表示法:

      (1)特定值:

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

           注意:day of week和day of month 一般不同时使用:

      (2)*

          给定时间点上有效取值范围内的所有制;表 “每…"

      (3)离散取值: ,

          在时间点上使用逗号分隔的多个值;

          #,#,#,

      (4)连续取值: –

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

          #-#

      (5)在指定是几点上,定义步长;

          /#: #即步长:

          */2

 注意:1、指定的时间点不能被步长整除时,其意义将不符存在;

       2、最小时间单位为”分钟“,想完成”秒“级任务,得需要额外借助于其它

         机制;定义成每分钟任务;而在利用脚本实现在每分钟之内,循环执行多次;

      示例:

     (1)3****:每小时执行一次,每小时第3分钟;

     (2)34**5:每周执行一次:每周5的4点3分;

     (3)5 6 7 * *:  每月执行一次; 第  月的7号的6点5分;

     (4)7 8 9 10 *:每年执行一次, 每年的10月9号8点7分;

     (5)9 8 * * 3,7 :每周三和周日;

     (6)0 8,20 * *3,7:

     (7)0 9-18 * * 1-5:

     (8)*/5 * * * *: 每五分钟执行一次某任务;

     (9)*/7

                                  

 crontab命令:

      crontab [-u user] file

      crontab [-u user] [-l | -r | -e] [-i] [-s]

      -e: 编辑任务;

      -l: 列出所有任务

      -r: 移除所有任务:即删除/var/spool/cron/RSERNAME文件:

      -i: 在使用-r 选项移除所有任务是提示用户确认;

      -u: user: root用户可为指定用户管理cron任务

注意:运行结果一邮件通知给当前用户;如果拒绝解释邮件:

    (1):COMMAND>/dev/null

    (2):COMMAND &/dev/null

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

思考:某任务在指定的时间因关机未能执行,下次开机会不会自动执行?

      不会!

 如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用anacron实现

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

(0)
shadowshadow
上一篇 2016-12-31 21:11
下一篇 2016-12-31 21:36

相关推荐

  • Linux基础目录命名的法则及规定功能

    Filesystem Hierarchy Standard (FHS):重点在于规范每个特定的目录下应该要放置什么样子的数据。 这样做好处是,在Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。 /bin:系统有很多放置执行文件的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。 在/bin底下…

    Linux干货 2017-07-02
  • 第七周练习

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;   ~]# mke2fs -t ext4 -b 2048 -m 2 -L…

    Linux干货 2016-12-10
  • grep及正则表达式相关练习

    grep及正则表达式相关练习 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 ~]# cp -r /etc/skel/ /home/tuser1 ~]# chmod -R 700 /home/tuser1 ~]# ls -ld /home/tuser1 drwx&#821…

    Linux干货 2016-10-11
  • 文件管理

    一、文件系统     单根架构,根文件系统rootfs     不是linux大小写敏感,而是文件系统支不支持大小写。     路径分割 /     FHS:目录结构,文件分层标准  &nb…

    Linux干货 2016-08-02
  • 学习Linux,记得有困难,找“男人”。

      对于Linux初学者而言,较短时间内需要涉及到几十个命令,而且每个命令还可辅以短选项、长选项…让初学者在实践时苦不堪言。   一头雾水时,请找Super"man"!  "man"的使用非常简单,命令行直接输入man COMMAND,如#man ls。此处的COMMAND均指…

    Linux干货 2016-01-15
  • 用户及用户组管理使用的练习

    用户及用户组管理使用的练习 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 先使用who得出登陆用户,通过uniq去重。 [root@mail ~]# who | grep -E -o “^[[:alnum:]]+” | uniq root 2、取出最后登录到当前系统的用户的相关信息。 思路:首先使用who取得最后…

    Linux干货 2018-03-18

评论列表(1条)

  • luoweiro
    luoweiro 2017-02-23 08:06

    给你出一题,每天晚上的02:10:10秒执行一个任务如何写?