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

相关推荐

  • 一些基础命令的基本用法介绍

    节选一部分常用参数用法 基础命令 tty 切换X Window或命令行模式 Ctrl+Alt+F1~F6  tty1~tty6文字界面 Ctrl+Alt+F7  图形界面 startx 登录图形界面系统 date 日期 date +%Y/%m/%d  当前日期 date +%H:…

    Linux干货 2016-10-31
  • 15 权限管理及作业

    15 权限管理及作业(作业单独一篇) 一、杂项知识整理 1、访问控制列表:ACL:Access Control List,实现灵活的权限管理。     除了文件的所有者,所属组和其它人,可以对更多的用户设置权限。     centos7.0之后默认创建的ext4文件系统有ACL功…

    Linux干货 2016-08-04
  • 用户管理权限命令总结

    用户 Linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。 用户分类 超级用户:(root,UID=0) 普通用户:(UID在500到60000) 伪用户:(UID在1到499) 系统和服务相关的:bin、daemon、shutdown等 进程相…

    Linux干货 2017-04-03
  • 系统基础之用户,组管理作业题

    、创建testuser uid 1234,主组:bin,辅助组:root,ftp,shell:/bin/csh home:/testdir/testuser 1 2 3 [root@wen-7 ~]# useradd -u 1234 -g bin -G root,ftp&nbsp…

    Linux干货 2016-08-04
  • yum更多用法及源码编译安装apache和当天作业

    一、yum的更多用法 上篇文章介绍了yum的基础用法及yum源的基本配置,除此之外yum还有更多的用法,以下将继续介绍yum的使用方法。 1、yum-config-manager工具,该工具可以自动生成yum的repo文件,而不需要手动创建编写,使用方法如下: 用法:yum-config-manager [options] [section] -add-re…

    Linux干货 2016-08-24
  • 利用keepalived搭建高可用集群

    在一个系统中,常常存在一些单点服务器,为了提高整个系统的稳定性,我们常常需要对这些单点服务做高可用配置;keepalived即为一种常用的高可用配置服务; Keepalived的工作模式有以下两种: 1、 主/备:即单虚拟路径器,仅配置一个VIP; 2、 主/主:即多个虚拟路径器,配置多个VIP,每个虚拟路径器作为其中某个VIP的的master虚拟路径器; …

    Linux干货 2016-11-01

评论列表(1条)

  • luoweiro
    luoweiro 2017-02-23 08:06

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