美文网首页路由联盟
20-Openwrt crond crontab

20-Openwrt crond crontab

作者: Creator_Ly | 来源:发表于2022-05-14 17:45 被阅读0次

    crond和corntab都是busybox下的一个工具,crond是一个后台进程,每隔一分钟读取配置文件中的参数,执行对应的动作。crontab是提供的一个命令行,可以对配置文件进行增删改查。

    1、openwrt上启动crond进程

    crond的启动参数如下:

    一般就设置-c指定文件目录,-l日志等级

    # crond -h
    crond: invalid option -- h
    BusyBox v1.22.1 (2022-03-14 17:26:20 CST) multi-call binary.
    
    Usage: crond -fbS -l N -L LOGFILE -c DIR
    
            -f      Foreground
            -b      Background (default)
            -S      Log to syslog (default)
            -l      Set log level. 0 is the most verbose, default 8
            -L      Log to file
            -c      Working dir
    

    openwrt中还是在/etc/init.d/中有cron启动程序,如下

    # cat /etc/init.d/cron
    #!/bin/sh /etc/rc.common
    # Copyright (C) 2006-2011 OpenWrt.org
    
    START=50
    
    USE_PROCD=1
    PROG=/usr/sbin/crond
    
    validate_cron_section() {
            uci_validate_section system system "${1}" \
                    'cronloglevel:uinteger'
    }
    
    start_service () {
            [ -z "$(ls /etc/crontabs/)" ] && return 1
    
            loglevel=$(uci_get "system.@system[0].cronloglevel")
    
            [ -z "${loglevel}" ] || {
                    /sbin/validate_data uinteger "${loglevel}"
                    [ "$?" -eq 0 ] || {
                            echo "validation failed"
                            return 1
                    }
            }
    
            mkdir -p /var/spool/cron
            ln -s /etc/crontabs /var/spool/cron/ 2>/dev/null
    
            procd_open_instance
            procd_set_param command "$PROG" -f -c /etc/crontabs -l ${loglevel:-5}
            procd_close_instance
    }
    
    service_triggers()
    {
            procd_add_validation validate_cron_section
    }
    
    

    启动进程如下:

    # ps | grep crond
    27141 root      1528 S    /usr/sbin/crond -f -c /etc/crontabs -l 5
    

    在system模块下可以添加crond启动log的等级,默认是5

    # cat /etc/config/system
    
    config system
            option zonename 'Asia/Shanghai'
            option timezone 'CST-8'
            option cronloglevel '4'
    

    2、crontab命令使用

    列出当前的默认定时任务列表:

    crontab -l
    

    删除当前的默认定时任务列表:

    crontab -r
    

    修改当前的默认定时任务列表,其实就是使用vi打开/etc/crontabs/root文件进行编辑

    crontab -e
    

    上面的crontab命令其实是个鸡肋,直接用cat/vi查看修改/etc/crontabs/root文件就行了。

    3、创建定时任务

    计划任务列表的格式:

    [minute] [hour] [day of month] [month] [day of week] [program to be run]
    

    其中各个参数的取值范围是:

    minute(0-59)
    
    hour(0-23)
    
    day of month(1-31)
    
    month(1-12)
    
    day of week(0-7,0 or 7 is Sun)
    

    每个参数里的取值可以有4种间隔符:

    * 表示任意
    
    – 表示范围
    
    , 表示枚举多个值
    
    / 表示每隔
    

    例如:

    周一到周五每天晚上23:30重启系统

    30 23 * * 1-5 reboot
    

    每天每隔10分钟执行run.sh脚本

    */10 * * * * date
    

    每天14点-15点,和每天20点到-21点,每个15分钟执行一次run.sh脚本

    echo "*/15 14,20 * * * date" >> /etc/crontabs/root
    

    任务添加到/etc/crontabs/root里面之后,要等下一分钟才可以生效到,因为crond进程每隔一分钟才执行一次,如果想马上生效,就重启crond进行/etc/init.d/crond restart

    Linux crontab 命令:https://www.runoob.com/linux/linux-comm-crontab.html

    相关文章

      网友评论

        本文标题:20-Openwrt crond crontab

        本文链接:https://www.haomeiwen.com/subject/lhlmurtx.html