1. 程式人生 > >Linux命令——crontab

Linux命令——crontab

                                                            Linux定時任務crontab介紹

        cron工具是一個以系統服務的形式存在。通過/etc/rc.d/init.d或/etc/init.d目錄下啟動指令碼crond來啟動。也可以直接通過service crond start 命令來啟動。

        cron不停地檢查所有配置的任務在當前是否應該執行,任務的最小時間間隔是1分鐘,也就是說任務最頻繁只能每分鐘執行一次。

1.crontab命令的選項

2.cron檔案語法

        可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應使用者的cron檔案,也可以直接修改/etc/crontab檔案。具體格式如下:


        每個欄位代表的含義如下:
        Minute, 每個小時的第幾分鐘執行該任務
        Hour,每天的第幾個小時執行該任務
        Day,每月的第幾天執行該任務
        Month,每年的第幾個月執行該任務
        DayOfWeek,每週的第幾天執行該任務,0表示週日
        Command,指定要執行的程式 、指令碼或命令

        在這些欄位裡,除了“Command”是必須指定的欄位以外,其它欄位皆為可選。對於不指定的欄位,要用*來填補其位置。

3 幾個特殊符號的含義
        * 代表取值範圍內的數字
        / 代表”每”
        - 代表從某個數字到某個數字

        , 分開幾個離散的數字

4 關於cron配置檔案/etc/crontab

cron的主配置檔案是/etc/crontab,它包括下面幾行:


        前四行是用來配置 cron 任務執行環境的變數:
        Shell 變數的值指定shell 環境(此處預設為 bash shell);PATH 變數定義用來執行命令的程式路徑;cron 任務的輸出被郵寄給 MAILTO 變數定義的使用者名稱,如果 MAILTO 變數被定義為空白字串(MAILTO=””),電子郵件就不會被寄出;HOME 變數可以用來設定在執行命令或指令碼時使用的主目錄。

        如在/etc/crontab檔案中run-parts部分所示,它使用run-parts指令碼來執行存在於/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly和/etc/cron.monthly目錄中的指令碼,這些指令碼被相應地按照預設時間在每小時、每日、每週、或每月執行。這些目錄中的檔案應該是 shell 指令碼,並且具有可執行許可權(chmod +x filename)。        如果某 cron 任務需要根據排程來執行,而不是每小時、每日、每週、或每月地執行,它可以被新增到/etc/cron.d目錄中。該目錄中的所有檔案使用和 /etc/crontab中一樣的語法。

        每次編輯完某個使用者的cron設定後,cron自動在/var/spool/cron下生成一個與此使用者同名的檔案,此使用者的cron資訊都記錄在這個檔案中,這個檔案是不可以直接編輯的,只可以用crontab -e來編輯。cron啟動後每過一份鍾讀一次這個檔案,檢查是否要執行裡面的命令。因此此檔案修改後不需要重新啟動cron服務。

5 常見cron示例參考



6 啟動或關閉

        由於Cron 是Linux的內建服務,可以用以下的方法啟動、關閉這個服務:


在suse系統上市service cron start/service cron status/service cron stop/service cronrestart

7 cron任務檔案
        cron 會從如下這些地方讀取安裝的任務:
        /etc/anacrontab
        這個檔案存著系統級的任務。它主要用來執行每日的(daily),每週的(weekly),每月的(monthly)的任務。一般不在此檔案安裝自己的任務
        /etc/cron.d/
        此目錄下存放的是系統級任務的任務檔案。
        /var/spool/cron/
        此目錄下存放各個使用者的任務檔案。各個使用者的任務存放在以自已使用者名稱為檔名的任務檔案中。此檔案中的指令行沒有使用者域。
        新任務安裝後或任務修改後不需要重啟cron程序即可生效。
8 日誌檔案

        可以通過檢視檔案/var/log/cron檢視任務的執行情況。