2007-02-09

Crontab 的安裝和使用

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-590-231-311-120-7admin欲執行的執行檔及其參數

以下舉幾個範例:

/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 刪除,不然會浪費你的空間和資源喔!)

參考文章:
鳥哥的 Linux 私房菜:例行性命令的建立
Crobtab Tutorial

回應: 0

張貼留言

歡迎留言或發表意見,不過要理性不做人身攻擊。匿名的朋友得到回應的速度會比較慢喔~
發問相關的禮貌和規矩請先參考這篇文章,不當留言、和本文無關的回應可能會被直接刪除無視喔!