天天看点

Linux未来任务的调度——at,batch,crontab命令

### 在linux中,我们可以实现对于任务的未来调度,从而可以借助于linux实现半自动化运维操作方式,简而言之就是可以在未来的某个时间点,系统可以自动运行我们部署的任务

前提:

 需要一个准确的时间

 可以支持任务调度的应用程序

**注意**:

 在计划任务中,所有执行的命令的输出结果,这类及结果均以邮件的方式发送至指定的用户邮箱中;

 邮箱的发送:

  mail命令

   mail [-s SUBJECT]  USERNAME[@DOMAINNAME]

   (Ctrd + d发送)

    系统用户的邮箱的目录/var/spool/mail/

 at命令的常用用法:

  at, batch, atq, atrm - queue, examine or delete jobs for later execution

   at [option] timespec

   timespec:

    1.HH:MM [YYYY-mm-dd]

    2.noon,midnight,teatime

    3.tomorrow

    4.now+#UNIT

     UNIT:minutes,hours,days,or weeks

at定义的计划任务都在某个特定的任务队列中;默认at只启用了一个at队列,通常用a表示;

Linux未来任务的调度——at,batch,crontab命令

at命令的常用用法:

 at [-q QUEUE_NAME] time

    定义计划任务,输入任务之后,Ctrl+d提交

 atq或at -l

   查看所有任务队列中尚未执行计划任务列表;

 atrm JOB_ID或at -d JOB_ID

    撤销任务队列中尚未执行的指定任务标识符的计划任务

 at -f /PATH/TO/SOMEFILE time

    从文件中读取命令操作而不是标准输入中读取

 at -c JOB_ID

    查看指定的计划任务的具体内容;

比如:

 在2019年新年跨年时给liujingyu发一封电子邮件,祝他新年快乐。

Linux未来任务的调度——at,batch,crontab命令

用at -c 5 命令查看以后,只有最后两行是我们预先写的语句;

Linux未来任务的调度——at,batch,crontab命令

batch命令:

 与at命令类似的,默认的队列是b,都是一次性执行的定义的计划任务;

 区别是:

  batch命令定义计划任务时,无需指定执行时间,系统会自动选择比较空闲的时间来完成此任务;

crond任务的调度进程;能够识别和周期性的执行crontab命令定制的计划任务;

 crond定义的计划任务分为两类:

  系统任务:

    全局性任务:通常使用/etc/crontab文件定义;

Linux未来任务的调度——at,batch,crontab命令

其不难看出通用格式:

 *  *   * *  * user-name command to be executed

分钟 小时 天 月 星期

   注意:

    * * * * *:定义周期性执行计划任务的具体时间;

    user-name:执行此任务的用户;

    command to be executed:此次计划任务的执行主体,建议使用绝对路径;

  用户任务:

   个体性任务通常存放在/var/spool/cron/目录下的与用户名对于的文件中

   此类文件格式:    

    *  *   * *  * command to be execute

时间表示法:

     1.某个特定时间:给定的时间点的有效取值范围内的所有有效值;

       0 3 4 9 * (9月4日3点整执行脚本)

     2.通配符时间:"*",表示"每..."的意思;

     3.离散的时间点:

         0 8,20 * * 1,2,4,5 (周1、2、4、5的8点和20点整执行脚本)

     4.连续的时间段 

        0-10 8-12 * * *

     5.步进时间:

        */3 * * * * 每三分钟执行一次

        */9 * * * *:无法真正实现每9分钟执行一次;因此默认情况下,步进长度应该是能够被60整除的数字;

        注意:最小的时间单位是分钟,如果计划使用不足一分钟的若干秒为执行周期,则必须借助于其他的机制,如:编写shell脚本;

 crontab命令:

  crontab [-u user] file

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

      -u user:超级用户为自己或其他用户设置或编辑周期性任务时使用的选项;

      -l:查看所有的已经被定义好的计划任务列表;

      -e:使用vi编辑器编辑临时的crontab文件;

      -r:移除所有的计划任务;建议谨慎使用;

      -i:在使用-r选项时,能够进行交互式删除;

crontab -e

* * * * * root /usr/bin/date

ls /var/spool/cron/root

里边就会有刚才写的脚本;

mail 

继续阅读