Crontab 是負責系統去處理例行性工作的服務,如果你希望要求系統週期性或是在未來特定時間會去執行什麼工作,有點像 scheduler,這個服務就很重要了。很多作業系統會內建這個重要的服務,在 WL-500g 上面我們要自己安裝。安裝的步驟很簡單:
ipkg install cron
此時我安裝的版本是 4.1,裝好會產生一個像系統用「例行性工作表」的設定檔:/opt/etc/crontab,我們可以修改一下內容,把 Path 加一些目錄:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
MAILTO="" 引號裡面可以指定帳號或是或是完整的 e-mail,當 crontab 發生問題時會通知。分隔線下是定期執行某些工作的語法,欄位大致為:
代表意義 | 分鐘 | 小時 | 日期 | 月份 | 週 | 執行身份 | 執行指令 |
數字範圍 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 | admin | 欲執行的執行檔及其參數 |
以下舉幾個範例:
/5 * * * * admin cp file1 file2 (每五分鐘用 admin 身份去執行命令, copy file1 到 file2 去)
2 4 * * * admin command (每天早上 4:02 去執行 command)
0 8,18 * * * admin command (每天早上八點和晚上六點各執行一次命令)
30 8-12 * * * admin command (每天的 8:30, 9:30 到 12:30 都執行一次命令)
59 23 24 9 * admin command (每年 9/24 23:59 的時候執行一次)
想實際測試看看嗎?我們可以做一個實驗,先做一個執行檔,它會把現在時間添加寫入一個 log 檔,我們把執行這個執行檔放入例行性工作,要它五分鐘做一次,我們只要等一段時間再去看那個 log 檔,就知道他是不是真的每五分鐘做一次囉!首先我們在 /opt/tmp 下面做一個執行檔 test.sh:
nano /opt/tmp/test.sh
檔案加入以下內容:(把現在時間寫入 log 檔 /opt/tmp/test.log)
#!/bin/sh
date >> /opt/tmp/test.log
檔案存好,記得更改這個檔案的屬性才能夠執行!
chmd 755 /opt/tmp/test.sh
然後用 nano 修改 crontab 增加一筆記錄:
nano /opt/etc/crontab
加入以下這一行:(內容是,每五分鐘,把當時的時間添加寫入 log 檔)
*/5 * * * * admin /opt/tmp/test.sh
等個五分鐘十分鐘或更長一點的時間,查看 log 內容 (cat /opt/tmp/test.log),看看裡面的時間記錄是不是真的是每五分鐘做一次。(實驗做完,記得把 crontab 的那一筆紀錄和那個測試執行檔及 log 刪除,不然會浪費你的空間和資源喔!)
回應: 0
張貼留言
歡迎留言或發表意見,不過要理性、不做人身攻擊。匿名的朋友得到回應的速度會比較慢喔~
發問相關的禮貌和規矩請先參考這篇文章,不當留言、和本文無關的回應可能會被直接刪除或無視喔!