zoukankan      html  css  js  c++  java
  • Centos下运行定时任务Crontab命令介绍

    1.Cron的启动与关闭

    因为Cron是Linux的内置服务。能够用下面的方法启动.关闭这个服务:

    /sbin/service crond start           //启动服务
    /sbin/service crond stop            //关闭服务
    /sbin/service crond restart        //重新启动服务
    /sbin/service crond reload         //又一次加载配置

    2.Cron配置文件

    2.1全局配置文件

    crontab在/etc文件夹以下存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个文件夹和crontab,cron.deny二个文件.

    cron.daily是每天运行一次的job,cron.weekly是每一个星期运行一次的job.cron.monthly是每月运行一次的job,cron.hourly是每一个小时运行一次的job.cron.d是系统自己主动定期须要做的任务,可是又不是按小时,按天,按星期,按月来运行的,那么就放在这个文件夹以下.

    /etc/crontab文件一般例如以下:

    01 * * * * root run-parts /etc/cron.hourly
    02 4 * * * root run-parts /etc/cron.daily
    22 4 * * 0 root run-parts /etc/cron.weekly
    42 4 1 * * root run-parts /etc/cron.monthly

    我们可在此文件里加入自己须要的cron job.

    /etc/cron.deny文件就是用于控制不让哪些用户使用Crontab的功能.

    2.2用户配置文件

    每一个用户都有自己的cron配置文件,通过crontab -e 就能够编辑,普通情况下我们编辑好用户的cron配置文件保存退出后,系统会自己主动就存放于/var/spool/cron/文件夹中,文件以username命名.

    linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d以下全部的内容.

    3.Cron命令格式

    crontab [ -u user ] 文件 
    crontab [ -u user ] { -l | -r | -e }

    -u:指定某一用户

    -e:运行文字编辑器来设定用户(当前用户或指定用户)时程表,内定的文字编辑器是vi.
    -r:删除用户时程表.
    -l:列出用户时程表.

    4.Cron文件格式

    *  *  *  *  *  command
    分 时 日 月 周   命令

    第1列表示分钟1~59, 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要执行的命令

    5.Cron文件使用说明

    5.1 普通情况

    当f1 为 * 时表示每分钟都要运行 program,f2 为 * 时表示每小时都要运行程序,其余类推. 

    * * * * * /bin/usershell  每天每分钟运行一次/bin/usershell
    当f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要运行,f2 为 a-b 时表示从第 a 到第 b 小时都要运行,其余类推.

    0-12 * * * * /bin/usershell  每天每小时从0到12分钟每分钟运行一次/bin/usershell
    当f1 为 */n 时表示每 n 分钟个时间间隔运行一次,f2 为 */n 表示每 n 小时个时间间隔运行一次,其余类推.

    * */2 * * * /bin/usershell  每天每2小时运行一次/bin/usershell
    当f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要运行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要运行,其余类推.

    * 1,3,5,7 * * * /bin/usershell  每天每逢1,3,4,7点运行一次/bin/usershell

    5.2. 冲突逻辑

    日期能够用月限定,也能够用“星期”指定,假设两个段有冲突,那么,第六段的命令将在匹配不论什么一个的情况下都执行,比方

    "30 4 1,15 * 5",将在每月的1号和15号加每一个周五,上午4:30执行.

    5.3. 符号"%"

    "%"在Cron文件里,有"结束命令行","换行","重定向"的作用,假如不须要"%"的特殊作用,须要使用转义符转义.

    5.4. @reboot

    这个不须要理解,为了达到在开机后执行,且仅仅执行一次的目的.除了这个,也无法通过前五段的设置来实现.

    @annually也是这个功能.

    至于@yearly,@monthly等等事实上都能够用上面的五段来设置.

     

    然后我自己写了一个小样例做了下測试:

    使用crontab -e进行编辑,内容为:

    */2 * * * * echo "i am crontab" >> /home/zhang/hello

    这样隔两分钟就会往hello这个文件中写i am crontab


    我自己写了一个脚本task.sh,直接执行task.sh时能够执行,但是加到crontab里就有执行了,后来我查看了网上的解决方法,最终攻克了,先来看一下我原来写的task.sh脚本吧:

    #!/bin/sh

    java -jar offergateway.biz.offer-1.0-SNAPSHOT.jar


    crontab定时任务的写法为:

    * * * * *  /task.sh


    后来我查了网上说要执行crontab,必须使用绝对路径,然后我把路径都改成绝对路径了。

    在crontab的运行环境变量中,没有对应用户设置的环境变量。你须要手动设置一下环境变量。才干让它生效。

    于是我把上面的脚本改成:

    #!/bin/sh

    . /etc/profile

    java -jar /home/zhang/offergateway.biz.offer-1.0-SNAPSHOT.jar


    crontab也改成绝对路径:

    * * * * *  sh /home/zhang/task.sh

    哈哈,成功了~~happy~~

    原文出自:http://li200429.iteye.com/blog/1608758

  • 相关阅读:
    《那些年啊,那些事——一个程序员的奋斗史》——94
    《那些年啊,那些事——一个程序员的奋斗史》——95
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》前言
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》资源汇总
    《那些年啊,那些事——一个程序员的奋斗史》——96
    《玩转.NET Micro Framework 移植基于STM32F10x处理器》微软中国.NET Micro Framework项目组工程师所作之序
    《那些年啊,那些事——一个程序员的奋斗史》——91
    《那些年啊,那些事——一个程序员的奋斗史》——93
    分享多年美工工作收集的小工具和经验
    C# 3.0的一些新特性
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6782161.html
Copyright © 2011-2022 走看看