OpenWrt 計畫任務使用方法

2022-02-25 23:43:14 字數 2378 閱讀 8511

/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")

crond 計畫任務使用

在ubuntu 測試 12.04 預設crond 服務是開啟的 crontab e 第一次編輯時提示選擇編輯器 vim 3 date time.log 每3分鐘更新一次時間到time.log檔案中 sudo service cron restart 重啟服務 目標版測試 ti平台 如果busybox...

使用MySQL計畫任務

原先,lamp的程式設計師為了完成一些週期性的資料庫操作任務,總是不得不借助於作業系統的幫助,比如windows的計畫任務,或者linux的contab。mysql5.1終於新增了event scheduler功能,可以直接在後台實現一下定時性的作業。但不知道什麼原因,在英文版的參考手冊中,位於觸發...

使用MySQL計畫任務

原先為了完成一些週期性的資料庫操作任務,總是不得不借助於作業系統的幫助,比如windows的計畫任務,或者linux的contab。mysql5.1終於新增了event scheduler功能,可以直接在後台實現一下定時性的作業。但不知道什麼原因,在英文版的參考手冊中,位於觸發器和檢視之間的第20章...