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
下一篇 2016-12-31

相关推荐

  • shell– 脚本编程

    编程基础 脚本基本格式 变量 运算 条件测试 流程控制 函数 数组 高级字符串操作 高级变量 配置用户环境 编程基础 程序:指令+数据 程序编程风格:     过程式:以指令为中心,数据服务于指令     对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释…

    Linux干货 2016-08-21
  • 马哥教育网络班21期-第七周课程练习

    第七周作业 1、创建一个10G分区,并格式为ext4文件系统; [root@qq ~]# fdisk /dev/sdb         #使用fdisk命令进行分区; Device contains neither&nb…

    Linux干货 2016-08-08
  • Homework Week-3 用户管理

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。  who | cut -f 1 -d \ | uniq “\”后跟一个空格字符 2、取出最后登录到当前系统的用户的相关信息。  who | tail…

    Linux干货 2016-08-24
  • linux基础练习

    马哥教育23期网络班+第6周课堂练习 Linux 基础练习 一、linux基础练习题 1、复制/etc/rc.d/rc.sysinit 文件至/tmp 目录,将/tmp/rc.sysinit 文件中的以至少一个空白字符开头的行的行首加#; 2、复制/boot/grub/grub.conf 至/tmp目录中 删除/tmp/grub.conf 文件中的行首的空白…

    Linux干货 2016-11-01
  • 文件的从属权限和特殊权限

    基础权限   rwx     经过今天的洗礼,了解了文件的权限位(rwx),而权限对于目录和文件有着不同的意义     使用ls -l 命令后可以看到     -rw-r–r–. 1 root root 1…

    Linux干货 2016-08-04
  • LVS专题: NAT和DR模型实现Web负载均衡

    LVS专题: NAT和DR模型实现Web负载均衡 前言: NAT实现 Real Server配置 Director配置 测试 实验拓扑 实验环境 实验步骤 DR实现 Director配置 Real Server配置 测试 实验拓扑 实验环境 实验步骤 总结: 前言: 在上篇文章中我们讲了一些LVS的基本概念和相应模型的实验原理和流程,本篇文章我们主要使用lv…

    2016-04-05

评论列表(1条)

  • luoweiro
    luoweiro 2017-02-23 08:06

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