zoukankan      html  css  js  c++  java
  • linux之定时任务

    crontab简介

    Linux crontab是用来定期执行程序的命令;当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

    而linux任务调度的工作主要分为以下两类:

      1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存;

      2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。

    语法

    1  crontab [ -u user ] file
    2 
    3 或者是
    4 
    5 crontab [-u user] {-l,-e,-r}

    crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

    -u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

    -l:列出目前的时程表

    -r:删除目前的时程表

    -e(编辑):执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)

    具体写定时器任务

    1 minute  hour  day   month  week   command

    minute:标识分钟,范围0-59

    hour:标识小时,0-23,那个小时

    day:标识天,0-31,那天

    month:标识年,0-12,那个月

    week:标识周,0-7,也就是星期几,这里的0或7代表星期日

    command:就是要执行的命令,可以使linux的操作命令或服务命令,也可以是shell脚本

    还可以使用一下特殊的字符:

    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作;

    逗号(,):可以用逗号隔开列表的指定范围,例如:1,2,3,4,5,6;如果是分钟,在一分钟-6分钟都要执行这个命令;

    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“1-6”表示1,2,3,4,5,6”

    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    具体实例

    实例1:每一分钟执行一次命令

    1 * * * * * command

    实例2:每小时的第3和第15分钟执行一次命令

    1 3,15 * * * * command

    实例3:在上午的8点到11点的,第3分钟和第15分钟进行实行一次

    1 3,15 8-11 * * * command

    实例4:每隔两天的上午8点到11点的第3和第15分钟执行

    1 3,15 8-11 */2 * * command

    实例5:每个星期一的上午8点到11点的第3和第15分钟执行

    1 3,15 8-11 * * 1 command

    实例6:每晚的0:30重启nginx

    1 30 0 * * * systemctl restart nginx

    注意事项

    1、新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行;

    2、当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron;千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了;在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。

    3、系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。

  • 相关阅读:
    September 17th 2016 Week 38th Saturday
    【2016-09-16】UbuntuServer14.04或更高版本安装问题记录
    September 16th 2016 Week 38th Friday
    September 11th 2016 Week 38th Sunday
    September 12th 2016 Week 38th Monday
    September 10th 2016 Week 37th Saturday
    September 9th 2016 Week 37th Friday
    c++暂停
    八皇后问题
    ( 转转)Android初级开发第九讲--Intent最全用法(打开文件跳转页面等)
  • 原文地址:https://www.cnblogs.com/meichao/p/9516107.html
Copyright © 2011-2022 走看看