linux任务计划、周期性任务执行 

 
 
 
 

 

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

 
 
 
 

     周期性运行某任务:crontab 

 

    执行结果会通过邮件发给用户 

 

     查看电子邮件服务是否开启 

 
protocol
 

      ~]# ss -tnl       

 

    本地电子邮件服务 

 

     smtp:simple mail transmission protocol 

 
protocol
 
  lmap4:Internet mail access 
 

 

    mail命令 

 

    mail-send and receive intenet mail 

 

    MUA:mail user agent  用户收发邮件的工具程序 

 

   mailx     username  

 

   邮件正文的生成:(1交互式输入:单独成行可以表示正文结束:Ctrl 
 
 +d提交亦可 
 

  (2)通过输入重定向; 

 

  (3)通过管道 

 

  at命令 

 

    at[option]...time 

 

     time:hh:mm 

 

    noon,midnight.... 

 

   at的作业有队列,用单个字母表示,某人都用a队列 

 

  常用选项: 

 

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

 

   -f:/path/from/somefile/:从指定文件中读取作业任务,而不再交互式输入 

 

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

 

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

 

   -q:指明队列 

 

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

 

  batch命令: 

 

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

 

  周期性任务计划:cron 

 

       服务程序: 

 

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

 

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

 

   centos7: 

 

     systemctil  status crond.service     

 

   centos6: 

 

      service crond status 

 
向crond提交作业的方式不同于at。他需要使用专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件,要使用crontab命令
 
  从容任务分为两类:
 
  系统cron任务:主要用于实现系统自身维护; 
 
 
  手动编辑/etc/crontab文件
 

    用户cron任务: 

 

        命令:crontab命令 

 

    系统cron的配置格式: 

 
 

            

 
 

 

  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 

 

        

 

  注意: 

 
  (1)每一行定义一个cron任务,共6个字段;
 

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

 

     (3)执行结果邮件发给当前用户 

 

  时间表示法: 

 

  (1)特定值: 

 

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

 

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

 

   (2)* 

 

     给定时间点上有效取值范围内的所有值:表“每..” 

 

     (3)离散取值 

 

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

 

     (4)连续取值 

 

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

 

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