2019年3月19日 星期二

linux crontab 使用


編輯排程:
crontab -e
若出現提示選項,需要選定使用的編輯器,這邊直接選vim.basic即可
(vim用法請看這裡)

在文件最底下新增一行
SHELL=/bin/bash
這是用來指定crontab在啟動的時候會使用哪種shell,可根據需求選定想使用的shell,這邊是建議選定bash shell,因為其指令較sh shell齊全,且多數linux系統皆有裝。

接著在下方繼續新增一行,
根據需求設定何時要出發什麼樣的指令
ex:
0 12 * * MON touch /home/user/test
此指令是代表每個禮拜一的中午12點0分會touch /home/user下的test檔案
or
0 12 * * WED source/home/user/run.sh

測試:
有可能crontab的觸發時間為UTC時間,會與當地時間差了n小時,導致沒有在預期的時間點觸發,故可先設定一個比現在時間晚一點的觸發時間,測試crontab是否有正確工作。

若的確有crontab觸發的時間標準並非當地時間,有兩種解法:

1. 將crontab改為讀當地時間(若有管理員權限的話)
下date指令。
若顯示出來的時間與當地時間不同,則須透過下列指令設置系統的當地時間,
這裡的範例時區是asia/taipei,可根據需求作修改。
sudo timedatectl set-timezone asia/taipei

接著重新啟動cron deamon
sudo service cron restart

2. 另外一種為照著UTC時間反推回去設定觸發時間,例如:預計禮拜一中午12點要觸發任務,寫觸發指令的時候可改為4點觸發(即UTC 4點的意思)


顯示排程:
crontab -l






沒有留言:

張貼留言