您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“linux注釋crontab文件及crontab執行sh的坑怎么解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“linux注釋crontab文件及crontab執行sh的坑怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
原來,在Linux下寫了很多crontab,來定時執行某些任務,
現在有以下需求:
需求:是要注釋某些crontab任務,
方法:只要在所要取消的crontab任務前,加'#'即可。
e.g.
5 4 * * sun echo "run at 5 after 4 every sunday"
注釋:
#5 4 * * sun echo "run at 5 after 4 every sunday"
就這么簡單。
看下面例子
最近寫了個腳本setdatetime.sh,手動執行的好好的,但是到了crontab中卻無法定時執行,如下:
*/1 * * * * /data/test/setdatetime.sh
乍一看,沒什么不對啊,什么情況!
后來在其他地方看到,必須要加sh才可以,如下:
*/1 * * * * sh /data/test_tzb/setdatetime.sh
如此,正常執行。
少一個sh,折騰大半天。
嗨,又遇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執行,一點問題都沒有。
但是放在crontab,又不行了,任務倒是執行,但是結果不對啊。
Fri Jul 1 00:00:00 CST 2021
我明明在另一臺服務器上,用crontab執行結果正確了啊,到這臺機器上,怎么又不正確了,氣人。
無奈執行,我從另一臺機器,直接把腳本copy過來,crontab執行以下腳本就正確了。
#!/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需要使用vi編輯器進行編輯。通過vi編輯器,可以很容易的在每一行的前面加上注釋符號'#',也很容易的使用vi編輯器,將每一行的已經注釋的'#'去掉。
先使用crontab -e進行對crontab的編輯操作
$ crontab -e
然后使用vi的如下編輯命令
:%s/^/#/
就可以將定時執行的任務前面都加上一個'#',進行注釋掉。
同樣等,某些操作完成后,也是,先進行對crontab的編輯
$ crontab -e
使用如下編輯命令
:%s/^#//
就可以講上次所有注釋的定時任務,全部撤銷。
讀到這里,這篇“linux注釋crontab文件及crontab執行sh的坑怎么解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。