zoukankan      html  css  js  c++  java
  • linux定时执行脚本

    Linux中,周期执行的任务一般由cron这个守护进程来处理。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”,是“cron table”的简写。

    1. cron服务【Ubuntu环境】

    查看cron状态

    1
    sudo  service cron status 

    开启cron

    1
    sudo /etc/init.d/cron start

    关闭cron

    1
    sudo /etc/init.d/cron stop

    重启cron

    1
    sudo /etc/init.d/cron restart

      

     

    2. crontab用法

    crontab –e : 修改 crontab 文件,如果文件不存在会自动创建。 
    crontab –l : 显示 crontab 文件。 
    crontab -r : 删除 crontab 文件。
    crontab -ir : 删除 crontab 文件前提醒用户。

    在crontab文件中写入需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下: 

    minute hour day-of-month month-of-year day-of-week commands    

    合法值为:00-59 00-23 01-31 01-12 0-6 (0 is sunday) 

    除了数字还有几个特殊的符号:"*"、"/"和"-"、","

    • *代表所有的取值范围内的数字
    • "/"代表每的意思,"/5"表示每5个单位
    • "-"代表从某个数字到某个数字
    • ","分开几个离散的数字

    :commands 注意以下几点

    • 要是存在文件,要写绝对路径
    • 即使是打印也不会显示在显示屏,在后台运行,最好重定向日志
     

    3. 编辑crontab文件

    1
    2
    3
    EDITOR=vi
    export EDITOR
    crontab -e

    4. 流程举例

    step1:写cron脚本文件,命名为crontest.cron。

    15,30,45,59 * * * * echo "xgmtest....."     表示,每隔15分钟,执行一次打印命令 

    step2:添加定时任务。执行命令

    1
    crontab /home/del/crontest.cron >~/log

    step3:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

    1
    crontab -l

    结果程序会每个15分钟往脚本里写一次“xgmtest.....”

    5. 几个例子

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    每天早上6
    0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
     
    每两个小时(第一个为15,指明没两个小时的第15min中执行一次)
    15 */2 * * * echo "Have a break now." >> /tmp/test.txt 
     
    晚上11点到早上8点之间每两个小时和早上八点
    0 23-7/28 * * * echo "Have a good dream" >> /tmp/test.txt
     
    每个月的4号和每个礼拜的礼拜一到礼拜三的早上11
    0 11 4 1-3 command line
     
    11日早上4
    0 4 1 1 * command line
     
    每小时(第一分钟)执行/etc/cron.hourly内的脚本
    01 * * * * root run-parts /etc/cron.hourly
     
    每天(凌晨402)执行/etc/cron.daily内的脚本
    02 4 * * * root run-parts /etc/cron.daily
     
    每星期(周日凌晨422)执行/etc/cron.weekly内的脚本
    22 4 * * 0 root run-parts /etc/cron.weekly
     
    每月(1号凌晨442)去执行/etc/cron.monthly内的脚本
    42 4 1 * * root run-parts /etc/cron.monthly
     
    注意:  "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。  
     
    每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。
    51525354555 161718 * * * command
     
    每周一,三,五的下午300系统进入维护状态,重新启动系统。
    00 15 * *135 shutdown -r +5
     
    每小时的10分,40分执行用户目录下的innd/bbslin这个指令:
    1040 * * * * innd/bbslink
     
    每小时的1分执行用户目录下的bin/account这个指令:
    1 * * * * bin/account
     
    每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):
    203 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)  
     
    每年的一月和四月,4号到9号的312分和355分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。
    12,553 4-91,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt
  • 相关阅读:
    cf D. Vessels
    cf C. Hamburgers
    zoj 3758 Singles' Day
    zoj 3777 Problem Arrangement
    zoj 3778 Talented Chef
    hdu 5087 Revenge of LIS II
    zoj 3785 What day is that day?
    zoj 3787 Access System
    判断给定图是否存在合法拓扑排序
    树-堆结构练习——合并果子之哈夫曼树
  • 原文地址:https://www.cnblogs.com/77qt/p/5846439.html
Copyright © 2011-2022 走看看