• crontab计划任务


    基本格式 :
    *  *  *  *  *  command
    分 时  日  月  周  命令
    解释:
    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时0~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6/7(0或7表示星期天)(或用Sun或Mon简写来表示)
    第6列要运行的命令

    crontab -e 编辑计划任务
    crontab -l 查看计划任务
    crontab -u username -e 在username用户下编辑计划任务
    crontab -u username -l 查看username下的计划任务
    crontab -u username -r 删除某个用户的计划任务

    所有用户定义的crontab存储在目录/var/spool/cron下(可以在这个目录下直接编辑和删除),任务会以创建者的身份被执行。要以特定用户创建一个crontab,先以该用户登录,执行命令crontab -e(或者在root下执行crontab -u username -e)
    crontab的日志是/var/log/cron

    实例如下:
    1)每一分钟执行/root/monit.sh这个脚本
    * * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
    或者
    */1 * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    每n分钟执行一次
    */n * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    2)每一小时执行/root/monit.sh这个脚本
    10 * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
    上面的10可以是任何一个数字,其实就是每一小时的第10分钟,或者第n分钟。

    每n小时执行一次
    n */n * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    每两小时执行一次
    0 */2 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    23:00到7:00之间每隔2小时执行一次
    0 23-7/2 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    23:00到8:00之间每隔1小时执行一次
    0 23-8/1 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    3)每晚23:59分钟执行
    59 23 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    即每天的m点的n分钟执行(也即每天执行一次,就是说每天的某个时候去执行就行)
    n m * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    4)晚上11点到早上8点之间每两个小时执行
    0 23-8/2 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    每天的0点、6点、12点、18点各执行一次
    0 0,6,12,18 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    11月份内,每天的早上6 点到12 点中,每隔2 小时执行一次
    0 6-12/2 * 11 * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    5)每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点执行
    0 11 4 * 1-3 /bin/bash -x /root/monit.sh > /dev/null 2>&1

    或者
    0 11 4 * mon-wed /bin/bash -x /root/monit.sh > /dev/null 2>&1

    6)1月1日早上4点执行
    0 4 1 1 * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    7)每周日的4:30执行一次(也即每周执行一次)
    30 4 * * 0 /bin/bash -x /root/monit.sh > /dev/null 2>&1

    8) 每个月的第一天的6:00执行一次(也即每月执行一次)
    0 6 1 * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    9)每月的第1、10、22天的7:30执行一次
    30 7 1,10,22 * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    10)每周六、周天的凌晨1:00执行
    0 1 * * 6,0 /bin/bash -x /root/monit.sh > /dev/null 2>&1

    11)每周一到周五的凌晨2:30执行
    30 2 * * 1-5 /bin/bash -x /root/monit.sh > /dev/null 2>&1

    12)每天18:00至23:0之间每隔30分钟执行
    0,30 18-23 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
    或者
    */30 18-23 * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1

    13)每10秒钟执行一次
    * * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
    * * * * * sleep 10;/bin/bash -x /root/monit.sh > /dev/null 2>&1
    * * * * * sleep 20;/bin/bash -x /root/monit.sh > /dev/null 2>&1
    * * * * * sleep 30;/bin/bash -x /root/monit.sh > /dev/null 2>&1
    * * * * * sleep 40;/bin/bash -x /root/monit.sh > /dev/null 2>&1
    * * * * * sleep 50;/bin/bash -x /root/monit.sh > /dev/null 2>&1

    每20秒执行一次
    * * * * * /bin/bash -x /root/monit.sh > /dev/null 2>&1
    * * * * * sleep 20;/bin/bash -x /root/monit.sh > /dev/null 2>&1
    * * * * * sleep 40;/bin/bash -x /root/monit.sh > /dev/null 2>&1

    每10秒钟执行一次下面的php脚本(log记录)
    * * * * * php /home/fdipzone/php/crontab/tolog.php
    * * * * * sleep 10;php /home/fdipzone/php/crontab/tolog.php
    * * * * * sleep 20;php /home/fdipzone/php/crontab/tolog.php
    * * * * * sleep 30;php /home/fdipzone/php/crontab/tolog.php
    * * * * * sleep 40;php /home/fdipzone/php/crontab/tolog.php
    * * * * * sleep 50;php /home/fdipzone/php/crontab/tolog.php

    使用 tail -f 查看执行情况,可以见到log每10秒被写入一条记录。
    tail -f /home/fdipzone/php/crontab/run.log
    2. 2014-03-31 21:47:01
    3. 2014-03-31 21:47:11
    4. 2014-03-31 21:47:21
    5. 2014-03-31 21:47:31
    6. 2014-03-31 21:47:41
    7. 2014-03-31 21:47:51
    8. 2014-03-31 21:48:01

    14) 在root账号下编写crontab -e计划任务,如下分别在6:30,12:30,18:30,23:30时间点,切换到oracle用户下执行脚本(当然也可以直接在oracle账号下编写crontab -e计划任务,如果不生效,就用这种方式)
    30 6,12,18,23 * * * su - oracle -c "/bin/bash -x /oradata/script/oracl_data_bak.sh" >/dev/null 2>&1

    -------------------------------------------------------------------------------------------------
    有一台内网服务器,通过squid代理上网。发现在这台内网服务器设定的crontab计划任务无效,没有自动执行!
    [root@wang-beta ~]# vim /etc/profile
    .....
    export HTTP_PROXY=http://192.168.1.199:3128
    [root@wang-beta ~]# source /etc/profile

    [root@wang-beta ~]# crontab -e
    */28 * * * * /bin/bash /root/sbin/list_update.sh > /dev/null 2>&1

    发现上面制定的计划任务,手动执行是生效的。但是crontab自动执行无效。

    解决办法:
    自动执行无效的原因是没有加载上相关环境变量所致。
    执行前,强制添加系统环境变量即可
    [root@wang-beta ~]# crontab -e
    */28 * * * * source /etc/profile;/bin/bash /root/sbin/list_update.sh > /dev/null 2>&1

    将/var/spool/cron/root文件锁定(chattr +ai /var/spool/cron/root),这样,crontab在root用户下就编辑不了(用户的crontab定时任务执行文件都放在"/var/spool/cron/用户")。

    crontab服务的启动:
    /etc/init.d/crond start/stop/restart/status

  • 相关阅读:
    struts2之拦截器
    JavaWeb开发之HttpServletResponse
    JavaWeb开发之Servlet
    HTTP协议详解
    字符串
    数组
    第一个只出现一次的字符
    DDoS的类型及原理
    引用变量&和指针*的区别
    赋值运算符的重载
  • 原文地址:https://www.cnblogs.com/fengzhongzhuzu/p/8998586.html
Copyright © 2020-2023  润新知