140 likes | 310 Views
Linux 基礎學習. Chapter 16 例行性工作排程 (crontab). 內容. 什麼是例行性工作排程 僅執行一次的工作排程 循環執行的例行性工作排程 可喚醒停機期間的工作任務. 16.1 什麼是例行性工作排程. 16.1.1 Linux 工作排程的種類: at, cron. 一種是例行性的,就是每隔一定的週期要來辦的事項; 一種是突發性的,就是這次做完以後就沒有的那一種 ( 電腦大降價 ...) 那麼在 Linux 底下如何達到這兩個功能呢?那就得使用 at 與 crontab 這兩個好東西囉!
E N D
Linux 基礎學習 Chapter 16 例行性工作排程 (crontab) Linux基礎--例行性工作排程 (crontab)
內容 • 什麼是例行性工作排程 • 僅執行一次的工作排程 • 循環執行的例行性工作排程 • 可喚醒停機期間的工作任務 Linux基礎--例行性工作排程 (crontab)
16.1 什麼是例行性工作排程 • 16.1.1Linux 工作排程的種類:at, cron • 一種是例行性的,就是每隔一定的週期要來辦的事項; • 一種是突發性的,就是這次做完以後就沒有的那一種 (電腦大降價...) • 那麼在 Linux 底下如何達到這兩個功能呢?那就得使用 at 與 crontab 這兩個好東西囉! • at :at 是個可以處理僅執行一次就結束排程的指令,不過要執行 at 時,必須要有 atd 這個服務 (第十八章) 的支援才行。在某些新版的 distributions 中,atd 可能預設並沒有啟動,那麼 at 這個指令就會失效呢!不過我們的 CentOS 預設是啟動的! • crontab :crontab 這個指令所設定的工作將會循環的一直進行下去!可循環的時間為分鐘、小時、每週、每月或每年等。crontab 除了可以使用指令執行外,亦可編輯 /etc/crontab 來支援。至於讓 crontab 可以生效的服務則是 crond 這個服務喔!
16.1 什麼是例行性工作排程 • 16.1.2Linux 上常見的例行性工作 • 進行登錄檔的輪替 (log rotate) • 登錄檔分析 logwatch 的任務 • 建立 locate 的資料庫 • whatis 資料庫的建立 • RPM 軟體登錄檔的建立 • 移除暫存檔 • 與網路服務有關的分析行為
16.2 僅執行一次的工作排程 • 16.2.1atd 的啟動與 at 運作的方式 • at 的運作方式 1.先找尋 /etc/at.allow 這個檔案,寫在這個檔案中的使用者才能使用 at ,沒有在這 個檔案中的使用者則不能使用 at (即使沒有寫在 at.deny 當中); 2.如果 /etc/at.allow 不存在,就尋找 /etc/at.deny 這個檔案,若寫在這個 at.deny 的 使用者則不能使用 at ,而沒有在這個 at.deny 檔案中的使用者,就可以使用 at 了; 3.如果兩個檔案都不存在,那麼只有 root 可以使用 at 這個指令。
16.2 僅執行一次的工作排程 • 16.2.2 實際運作單一工作排程
16.2 僅執行一次的工作排程 • at 工作的管理
16.2 僅執行一次的工作排程 • batch:系統有空時才進行背景任務
16.3 循環執行的例行性工作排程 • 16.3.1 使用者的設定
16.3 循環執行的例行性工作排程 • 16.3.2 系統的設定檔:/etc/crontab
16.3 循環執行的例行性工作排程 • 16.3.3 一些注意事項 • 資源分配不均的問題 • 取消不要的輸出項目 • 安全的檢驗 • 週與日月不可同時並存
16.4 可喚醒停機期間的工作任務 • 16.4.1 什麼是 anacron anacron 並不是用來取代 crontab 的,anacron 存在的目的就在於我們上頭提到的,在處理非 24 小時一直啟動的 Linux 系統的 crontab 的執行!所以 anacron 並不能指定何時執行某項任務,而是以天為單位或者是在開機後立刻進行 anacron 的動作,它會去偵測停機期間應該進行但是並沒有進行的 crontab 任務,並將該任務執行一遍後,anacron 就會自動停止了。
16.4 可喚醒停機期間的工作任務 • 16.4.2anacron 與 /etc/anacrontab 由於/etc/cron.daily 內的任務比較多,因此我們使用每天進行的任務來解釋一下anacron 的運作情況好了。anacron 若下達『 anacron -s cron.daily 』時,它會這樣運作的: 1. 由 /etc/anacrontab 分析到 cron.daily 這項工作名稱的天數為 1 天; 2. 由 /var/spool/anacron/cron.daily 取出最近一次執行 anacron 的時間戳記; 3. 由上個步驟與目前的時間比較,若差異天數為 1 天以上 (含 1 天),就準備 進行指令; 4. 若準備進行指令,根據 /etc/anacrontab 的設定,將延遲 65 分鐘 5. 延遲時間過後,開始執行後續指令,亦即『 run-parts /etc/cron.daily 』這串 指令; 6. 執行完畢後,anacron 程式結束。