linux crontab實現每秒執行

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容