linux注釋crontab文件及crontab執(zhí)行sh的坑怎么解決

    linux注釋crontab文件及crontab執(zhí)行sh的坑

    原來,在linux下寫了很多crontab,來定時執(zhí)行某些任務(wù),

    現(xiàn)在有以下需求:

    需求:是要注釋某些crontab任務(wù),

    方法:只要在所要取消的crontab任務(wù)前,加’#’即可。

    e.g.

    5?4?*?*?sun?echo?"run?at?5?after?4?every?sunday"

    注釋:

    #5?4?*?*?sun?echo?"run?at?5?after?4?every?sunday"

    就這么簡單。

    遇坑1

    看下面例子

    最近寫了個腳本setdatetime.sh,手動執(zhí)行的好好的,但是到了crontab中卻無法定時執(zhí)行,如下:

    */1?*?*?*?*?/data/test/setdatetime.sh

    乍一看,沒什么不對啊,什么情況!

    后來在其他地方看到,必須要加sh才可以,如下:

    */1?*?*?*?*?sh?/data/test_tzb/setdatetime.sh

    如此,正常執(zhí)行。

    少一個sh,折騰大半天。

    坑2

    嗨,又遇1坑,老半天又沒了,寫了一腳本,從baidu獲取時間,然后date -s。

    #!/bin/bash sudo?date?-s?"$(date?--date="$(wget?-S??"http://www.baidu.com/"?2>&1?|?grep?-E?'^[[:space:]]*[dD]ate:'?|?sed?'s/^[[:space:]]*[dD]ate:[[:space:]]*//'?|?head?-1l?|?awk?'{print?$1,?$3,?$2,??$5?,"GMT",?$4?}'?|?sed?'s/,//')")"

    用sh執(zhí)行,一點問題都沒有。

    但是放在crontab,又不行了,任務(wù)倒是執(zhí)行,但是結(jié)果不對啊。

    Fri Jul ?1 00:00:00 CST 2021

    我明明在另一臺服務(wù)器上,用crontab執(zhí)行結(jié)果正確了啊,到這臺機器上,怎么又不正確了,氣人。

    無奈執(zhí)行,我從另一臺機器,直接把腳本copy過來,crontab執(zhí)行以下腳本就正確了。

    #!/bin/bash export?LANG=en_US.UTF-8 .??/etc/profile sudo?date?-s?"$(date?--date="$(wget?-S??"http://www.baidu.com/"?2>&1?|?grep?-E?'^[[:space:]]*[dD]ate:'?|?sed?'s/^[[:space:]]*[dD]ate:[[:space:]]*//'?|?head?-1l?|?awk?'{print?$1,?$3,?$2,??$5?,"GMT",?$4?}'?|?sed?'s/,//')")"

    看出不同了么?

    . ?/etc/profile 要加上。

    crontab快速注釋及撤銷注釋

    我們知道一般情況下,編寫crontab需要使用vi編輯器進(jìn)行編輯。通過vi編輯器,可以很容易的在每一行的前面加上注釋符號’#’,也很容易的使用vi編輯器,將每一行的已經(jīng)注釋的’#’去掉。

    批量快速注釋及撤銷注釋

    先使用crontab -e進(jìn)行對crontab的編輯操作

    $?crontab?-e

    然后使用vi的如下編輯命令

    :%s/^/#/

    就可以將定時執(zhí)行的任務(wù)前面都加上一個’#’,進(jìn)行注釋掉。

    同樣等,某些操作完成后,也是,先進(jìn)行對crontab的編輯

    $?crontab?-e

    使用如下編輯命令?

    :%s/^#//

    就可以講上次所有注釋的定時任務(wù),全部撤銷。

    ? 版權(quán)聲明
    THE END
    喜歡就支持一下吧
    點贊15 分享