linux crontab实现每秒执行

作者: holly_wang_王小飞 | 来源:发表于2016-11-12 15:08 被阅读1343次

    linux crontab 实现定时任务非常方便

    CRONTAB(1)                   Cronie Users’ Manual                   CRONTAB(1)
    
    NAME
           crontab - maintain crontab files for individual users
    
    SYNOPSIS
           crontab [-u user] file
           crontab [-u user] [-l | -r | -e] [-i] [-s]
    
    DESCRIPTION
           Crontab  is the program used to install, remove or list the tables used to drive the cron(8) daemon.  Each user can have their own crontab, and though these are files in /var/spool/
           , they are not intended to be edited directly. For SELinux in mls mode can be even more crontabs - for each range. For more see selinux(8).
    
           The cron jobs could be allow or disallow for different users. For classical crontab there exists cron.allow and cron.deny files.  If cron.allow file exists, then you must be  listed
           therein  in  order  to be allowed to use this command.  If the cron.allow file does not exist but the cron.deny file does exist, then you must not be listed in the cron.deny file in
           order to use this command.  If neither of these files exists, only the super user will be allowed to use this command.  The second option is using PAM authentication, where you  set
           up users, which could or couldn’t use crontab and also system cron jobs from /etc/cron.d/.
    
           The temporary directory could be set in enviroment variables. If it’s not set by user than /tmp is used.
    
    OPTIONS
           -u     Append  the name of the user whose crontab is to be tweaked.  If this option is not given, crontab examines "your" crontab, i.e., the crontab of the person executing the com-
                  mand.  Note that su(8) can confuse crontab and that if you are running inside of su(8) you should always use the -u option for safety’s sake.  The first form of this  command
                  is used to install a new crontab from some named file or standard input if the pseudo-filename "-" is given.
    
           -l     The current crontab will be displayed on standard output.
    
           -r     The current crontab will be removed.
    
           -e     This  option  is  used  to  edit  the  current crontab using the editor specified by the VISUAL or EDITOR environment variables.  After you exit from the editor, the modified
                  crontab will be installed automatically.
    
           -i     This option modifies the -r option to prompt the user for a ’y/Y’ response before actually removing the crontab.
    
           -s     It will append the current SELinux security context string as an MLS_LEVEL setting to the crontab file before  editing  /  replacement  occurs  -  see  the  documentation  of
                  MLS_LEVEL in crontab(5).
    
    SEE ALSO
           crontab(5),cron(8)
    
    FILES (crontab权限问题)
           /etc/cron.allow
           /etc/cron.deny
    
    STANDARDS
           The crontab command conforms to IEEE Std1003.2-1992 (‘‘POSIX’’).  This new command syntax differs from previous versions of Vixie Cron, as well as from the classic SVR3 syntax.
    
    DIAGNOSTICS
           A fairly informative usage message appears if you run it with a bad command line.
    
    日志文件一般在 /var/log/cron 文件
    

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

    crontab文件的一些例子:
    每晚的21:30重启apache。
    30 21 * * * /usr/local/etc/rc.d/lighttpd restart
    每月1、10、22日
    45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
    每天早上6点10分
    10 6 * * * date
    每两个小时
    0 */2 * * * date
    晚上11点到早上8点之间每两个小时,早上8点
    0 23-7/2,8 * * * date
    每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
    0 11 4 * mon-wed date
    1月份日早上4点
    0 4 1 jan * date
    crontab最小维度是分钟,想实现秒级别的方式有两种

    1. crontab -e 中实现
       * * * * * /bin/date >>/tmp/date.txt
       * * * * * sleep 10; /bin/date >>/tmp/date.txt
       * * * * * sleep 20; /bin/date >>/tmp/date.txt
       * * * * * sleep 30; /bin/date >>/tmp/date.txt
       * * * * * sleep 40; /bin/date >>/tmp/date.txt
       * * * * * sleep 50; /bin/date >>/tmp/date.txt
    

    2.在shell脚本中实现

    vim test.sh

    #!/bin/bash
            for((i=1;i<=5;i++));
                    do
                     /bin/date >>/tmp/date.txt
                    sleep 10
                    done &
    

    crontab -e

       * * * * *  test.sh
    

    在执行crontab的是经常碰到找不到命令的情况,这时候是path的问题制定path即可

    例如
    crontab -e

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
     * * * * *  test.sh
    

    相关文章

      网友评论

      本文标题:linux crontab实现每秒执行

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