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用户下创建一个定时重启系统的任务也是无效的。

  • 相关阅读:
    03 python学习笔记-文件操作
    02 Python学习笔记-基本数据类型
    01 Python简介、环境搭建及包管理
    一、如何使用postman做接口测试笔记一
    django测试开发-1.开始Hello django!
    Oracle创建用户并给用户授权查询指定表或视图的权限
    ORA-00933 UNION 与 ORDER BY
    excel设置单元格不可编辑
    oracle之分组内的字符串连接
    10 款强大的JavaScript图表图形插件推荐
  • 原文地址:https://www.cnblogs.com/meichao/p/9516107.html
Copyright © 2011-2022 走看看