溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

crontab每10秒執(zhí)行一次問題怎么解決

發(fā)布時間:2023-04-07 15:35:09 來源:億速云 閱讀:567 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“crontab每10秒執(zhí)行一次問題怎么解決”,在日常操作中,相信很多人在crontab每10秒執(zhí)行一次問題怎么解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”crontab每10秒執(zhí)行一次問題怎么解決”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

    crontab每10秒執(zhí)行一次問題

    需求:linux中使用crontab每十秒執(zhí)行一次

    場景:需要在ubuntu14服務(wù)器中使用代理每十秒執(zhí)行一次curl來訪問互聯(lián)網(wǎng),來測試代理網(wǎng)絡(luò)穩(wěn)定性。

    經(jīng)過網(wǎng)上的大量搜貼之后得到的可用的一個結(jié)論如下:

    # crontab -e
    * * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 30; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 40; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 50; /usr/local/cc.sh >>/usr/local/log.txt 2>&1

    如果你是直接一梭子全復(fù)制,改下目錄那么恭喜你完成了計劃任務(wù)。而我就不是了,我只寫了sleep 10 這條然后任務(wù)沒有執(zhí)行。這就是坑。

    坑1 .上面sleep 10 20 30 ...是啥意思啊,怎么個規(guī)則啊。一頭霧水,當(dāng)時我是直接把第二個sleep 10 那個定時任務(wù)直接粘進(jìn)去的。然后,任務(wù)沒有執(zhí)行就一直糾結(jié)任務(wù)沒有執(zhí)行這個問題。

    坑2.ubuntu系統(tǒng)第一次使用crontab -e 需要選擇比編輯器,如果選nano上,對我這種小白可就蒙圈。最后在命令行使用, select-ediort 來選擇編輯器選3 vim 就好了

    后來,明白后做了實驗。

    如果只寫前兩條的話是:在每分鐘的第一秒和第一個10秒執(zhí)行一次

     * * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
     * * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1

    crontab每10秒執(zhí)行一次問題怎么解決

    crontab每10秒執(zhí)行一次問題怎么解決

    以此類推只寫前三的話就是:

    在每分鐘的第一、第一個十秒、第二個十秒分別執(zhí)行一次

    * * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 10; /usr/local/cc.sh >>/usr/local/log.txt 2>&1
    * * * * * sleep 20; /usr/local/cc.sh >>/usr/local/log.txt 2>&1

    如果都寫上的話就是每十秒執(zhí)行一次啦,完美過程

    crontab每10秒執(zhí)行一次問題怎么解決

    過程遇到的問題(1):crontab -e 完都有新郵件

    crontab每10秒執(zhí)行一次問題怎么解決

    原因:

    1.crontab 每次執(zhí)行完程序產(chǎn)生的輸出都會發(fā)郵件到/var/mail/root

    2.定時任務(wù)語法有誤,/var/mail/root  發(fā)送的是錯誤日志,如下

    root@bogon:/usr/local# tail -20 /var/mail/root  

    From root@bogon Tue May 21 18:31:11 2019Return-Path: <root@bogon>X-Original-To: rootDelivered-To: root@bogonReceived: by bogon (Postfix, from userid 0) id AAFCB43077; Tue, 21 May 2019 18:31:11 +0800 (CST)From: root@bogon (Cron Daemon)To: root@bogonSubject: Cron <root@bogon> sleep 10; sh /home/liuxin/curl-status.sh >dev/null 2>&1Content-Type: text/plain; charset=ANSI_X3.4-1968X-Cron-Env: <SHELL=/bin/sh>X-Cron-Env: <HOME=/root>X-Cron-Env: <PATH=/usr/bin:/bin>X-Cron-Env: <LOGNAME=root>Message-Id: <20190521103111.AAFCB43077@bogon>Date: Tue, 21 May 2019 18:31:11 +0800 (CST) /bin/sh: 1: cannot create dev/null: Directory nonexistent

    解決:

    如果是1的話就放到黑洞  >/dev/null 2>&1

    * * * * * /usr/local/cc.sh >/dev/null 2>&1

    精講:

    1,/dev/null是linux系統(tǒng)的一個垃圾桶(一個不正經(jīng)的比喻)有不用的輸出都可以往里面扔。>/dev/null 缺省默認(rèn)是1 即 1>/dev/null    

    2,linux中有三種標(biāo)準(zhǔn)輸入輸出,分別是STDIN,STDOUT,STDERR,對應(yīng)的數(shù)字是0,1,2    2>&1就是把2錯誤輸出重定向到1標(biāo)準(zhǔn)輸出  而1又輸出到/dev/null黑洞

    如果不想輸出到一個文件可以這樣寫

    * * * * * /usr/local/cc.sh >>/usr/local/log.txt 2>&1

    過程中遇到的問題(2):如圖crontab -e 后是新文件

    crontab每10秒執(zhí)行一次問題怎么解決

    解決:crontab語法錯誤再三檢查后,建議select-editor 選3  vim

    linux crontab使用技巧

    crontab命令主要用于設(shè)置命令行或者腳本周期性的執(zhí)行。該命令從標(biāo)準(zhǔn)輸入設(shè)備讀取指令,并將其存放于文件中,以供之后讀取和執(zhí)行。

    主要講述crontb命令的基本語法和配置方法。

    crontab命令格式

    crontab [-u user] -e -l -r
    • -u 用戶名,不加-u參數(shù)默認(rèn)為當(dāng)前用戶。

    • -e 編輯crontab文件。

    • -l 列出crontab文件中的內(nèi)容。取值來源為/var/spool/cron下對應(yīng)的文件

    • -r 刪除crontab文件。

    crontab命令格式

    # Example of job definition:
     .---------------- minute (0 - 59)
     |  .------------- hour (0 - 23)
     |  |  .---------- day of month (1 - 31)
     |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
     |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
     |  |  |  |  |
     *  *  *  *  * command/script

    一個定時任務(wù)的配置共包括6個字段,分別是分、時、日、月、周、命令行或腳本,每一列取值的范圍或者含義如上述格式中注釋描述。

    特別注意一點是命令行或者腳本一定要配置成絕對路徑。

    特殊字段說明

    • 星號(*):代表所有可能的值,例如在第1列表示每分鐘執(zhí)行,第2列表示每小時執(zhí)行,第3列表示每天執(zhí)行。

    • 逗號(,):可以用逗號隔開的值表示指定一個列表范圍,例如,在第1列設(shè)置15,30,45表示在第15分鐘、30分鐘、45分鐘執(zhí)行。

    • 中杠(-):可以用整數(shù)之間的中杠表示一個整數(shù)范圍,例如"2-6"表示2,3,4,5,6

    • 正斜線(/):可以用正斜線指定時間的間隔頻率,例如第2列設(shè)置成"*/2",表示每兩小時執(zhí)行一次。

    每天晚上10點運(yùn)行rumenz.sh腳本

    0 22 * * * /root/rumenz.sh

    每月的1,3,7的早上8.30運(yùn)行rumenz.sh

    > 30 8 1,3,7 * * /root/rumenz.sh

    每周六,日的的凌晨2點執(zhí)行rumenz.sh

    > 0 2 * * 6,0 /root/rumenz.txt

    每天的的18點到23點每30分執(zhí)行rumenz.sh

    0,30 18-23 * * /root/rumenz.sh
    
    //或者
    
    */30 18-23 * * /root/rumenz.sh

    每天凌晨2點訪問一個網(wǎng)址

    > 0 2 * * * /usr/bin/curl https://rumenz.com

    crontab每10秒執(zhí)行一次rumenz.sh

    * * * * * /root/rumenz.sh
    * * * * * sleep 10;/root/rumenz.sh
    * * * * * sleep 20;/root/rumenz.sh
    * * * * * sleep 30;/root/rumenz.sh
    * * * * * sleep 40;/root/rumenz.sh
    * * * * * sleep 50;/root/rumenz.sh

    每 90 分鐘運(yùn)行一次rumenz.sh

    0 0-21/3 * * * /root/rumenz.sh
    30 0-22/3 * * * /root/rumenz.sh

    需要兩個表達(dá)式實現(xiàn)

    每90秒執(zhí)行一次rumenz.sh

    */3 * * * * /root/rumenz.sh
    */3 * * * * sleep 90;/root/rumenz.sh

    需要兩個表達(dá)式實現(xiàn)

    到此,關(guān)于“crontab每10秒執(zhí)行一次問題怎么解決”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI