OpenWrt 計划任務使用方法


linux重啟定時任務crontab命令

/etc/init.d/cron stop

/etc/init.d/cron start

/etc/init.d/cron restart

每天2點定時重啟服務器

crontab -e,編輯定時任務文本

添加以下后ctrl+x,再按y退出

0 2 * * * /sbin/reboot

- - - - - - - - - - - - - - - - - - - - - - - - - -

計划任務(Corn)是 Unix 和 類Unix 系統中一個常見的功能,用於設置周期性的被執行的命令。

計划任務的每個任務被存儲在corntab文件中。在正常的 Linux 系統下,每個用戶對應一 corntab 個文件,還有一個針對整個系統的 corntab 文件。不過在 OpenWrt,只有針對於整個系統的 corntab 文件,位於/etc/corntab/root

在 corntab 文件中,每一行對應一個任務,一個任務由執行時間和執行命令兩部分組成,而執行時間又細分為:分、時、日、月、周,以空格分割。

對於某些剛接觸 OpenWrt 或者 Linux 的小伙伴來說,都不知道這個計划任務有什么用處,很多小伙伴都經常問我:小山,給固件加一個定時重啟吧,我一般都會說,直接在計划任務添加啊,然后收到的回復一般都是:怎么用啊。

我表示很無奈啊,那這篇文章就教大家如何使用計划任務。

計划任務語法

剛剛我們說過了,在 corntab 文件里,每一行對應一個任務,那么一個任務是由一個指令構成的,這個指令包含執行時間和執行命令,那么這個任務指令究竟要怎么寫呢?

任務指令由6個部分組成:分、時、日、月、周、命令

時間參數范圍

分:0 – 59

時:0-23

日:1-31

月:1-12

周:0-7 (周日用 0 或 7 表示)

除了上面這些絕對值,還有一些特殊符號。

逗號 ( , ):將多個值分開

連詞符 ( – ):指定值的范圍

星號 ( * ):表示任何值,也可以理解為通配符。

斜杠 ( / ):需要和星號搭配使用,下面例子中告訴大家如何使用。

例子:0 6 * * * reboot

每天6點0分執行reboot命令。因為只設置了“分”和“時”,“日月周”都是通配符,所以只要當前時間是 6點0分,不管當前是幾月幾日周幾都會被執行。

還是例子:0 6 * * 1,3 reboot

每周一和周三的6點0分執行reboot命令。因為“周”被設置為了1,3,逗號是將多個值分開,當條件達到其中一個值時便會執行。所以只有在周一或者是周三的6點0分才會被執行,當然,也不管當前是幾月幾日。

再來個例子:0 6 * 3-6 1,3 reboot

這個例子的月改為了3-6,連字符的作用是指定范圍,它就是在三月至六月的每周一和每周三的6點0分執行reboot命令。其實也可以這樣寫0 6 * 3,4,5,6 1,3 reboot,不過這樣不夠簡潔,推薦還是使用連字符。

斜杠例子:0 */3 * * * reboot

斜杠的作用是跳過某些特定值。你可以把它看作一個除法,當結果等於整數時才會執行。上面個例子,把時寫成了*/3,星號表示任何值、/表示除法、3表示除數。那么,如果現在是1點,1/3 不是整數,就不會被執行,如果是9點,9/3 是整數,它就可以被執行。不知道我這樣說大家有沒有理解。(小山數學是體育老師教的)

最后一個例子:*/10 */3 * * * reboot

這個例子有兩個斜杠,分別是分和時,那么不但要滿足當前“分”除於10是整數,還需要滿足“時”除於3是整數,比如1點10分,雖然“分”滿足了條件,不過“時”並沒有,只有當前時間為3點40分,這樣的情況下,才會觸發執行。

可能有的小伙伴要問了,計划任務究竟在哪里寫?登陸 OpenWrt 網頁管理 → 系統 → 計划任務,如下圖:

計划任務注意事項

我們先來說一下上面那個重啟設備,那種寫法其實是錯誤的,正確的寫法應該是:0 6 * * * sleep 60 && reboot

為什么呢?因為當設備重啟后,計划任務的守護進程被啟動,便會立即檢查一遍是否有任務需要被執行,設備重啟時間一般是小於1分鍾的,所以當設備重啟后,就又會觸發這個重啟任務,直到時間不匹配為止,而延遲60秒再重啟設備可以避免這種錯誤。

當日或周同時被設定為固定值時,那么其中的一個條件被滿足時,任務就會被執行,不會等到兩個條件均滿足。(這么苛刻的條件,能滿足的估計不多。)

命令中雙引號使用 % 時,需要加反斜杠轉義,錯誤的例子:0 6 * * * touch /tmp/$(date "%Y"),正確的例子:0 6 * * * touch /tmp/$(date "\%Y")

http://www.openwrt.pro/post-452.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM