每個人或多或少都有一些約會或者是工作,有的工作是例行性的, 例如每年一次的加薪、每個月一次的工作報告、每週一次的午餐會報、每天需要的打卡等等; 有的工作則是臨時發生的,例如剛好總公司有**來訪,需要你準備演講器材等等! 用在生活上面,例如每年的愛人的生日、每天的起床時間等等、還有突發性的計算機大降價 (啊!真希望天天都有!) 等等羅。
像上面這些例行性工作,通常你得要記錄在行事曆上面才能避免忘記!不過,由於我們常常在計算機前面的緣故, 如果計算機系統能夠主動的通知我們的話,那麼不就輕鬆多了!嘿嘿!這個時候 linux 的例行性工作排程就可以派上場了! 在不考慮硬體與我們伺服器的鏈結狀態下,我們的 linux 可以幫你提醒很多任務,例如:每一天早上 8:00 鍾要伺服器連線上音響,並啟動**來喚你起床;而中午 12:00 希望 linux 可以發一封信到你的郵件信箱,提醒你可以去吃午餐了; 另外,在每年的你愛人生日的前一天,先發封信提醒你,以免忘記這麼重要的一天。
那麼 linux 的例行性工作是如何進行排程的呢?[color=red]所謂的排程就是將這些工作安排執行的流程之意[/color]! [color=blue]咱們的 linux 排程就是透過 crontab 與 at 這兩個東西![/color]這兩個玩意兒有啥異同?就讓我們來瞧瞧先!
[size=large][b]linux 工作排程的種類: at, cron[/b][/size]
從上面的說明當中,我們可以很清楚的發現兩種工作排程的方式:
[color=red]一種是例行性的,就是每隔一定的週期要來辦的事項;[/color]
[color=blue]一種是突發性的,就是這次做完以後就沒有的那一種 (計算機大降價...)[/color]
那麼在 linux 底下如何達到這兩個功能呢?那就得使用 at 與 crontab 這兩個好東西羅!
at :[color=red]at 是個可以處理僅執行一次就結束排程的命令[/color],不過要執行 at 時, 必須要有 atd 這個服務 (第十八章) 的支援才行。在某些新版的 distributions 中,atd 可能預設並沒有啟動,那麼 at 這個命令就會失效呢!不過我們的 centos 預設是啟動的!
crontab :[color=red]crontab 這個命令所配置的工作將會迴圈的一直進行下去![/color] [color=red]可迴圈的時間為分鐘、小時、每週、每月或每年等。[/color]crontab 除了可以使用命令執行外,[color=red]亦可編輯 /etc/crontab 來支援[/color]。 [color=red]至於讓 crontab 可以生效的服務則是 crond 這個服務喔![/color]
底下我們先來談一談 linux 的系統到底在做什麼事情,怎麼有若干多的工作排程在進行呢?然後再回來談一談 at 與 crontab 這兩個好東西!
[size=large][b]linux 上常見的例行性工作[/b][/size]
如果你曾經使用過 linux 一陣子了,那麼你大概會發現到 linux 會主動的幫我們進行一些工作呢! 比方說自動的進行線上公升級 (on-line update)、[color=red]自動的進行 updatedb (第七章談到的 locate 命令) 公升級檔名資料庫[/color]、自動的作登入檔分析 (所以 root 常常會收到標題為 logwatch 的信件) 等等。這是由於系統要正常執行的話, 某些在背景底下的工作必須要定時進行的緣故。基本上 linux 系統常見的例行性任務有:
[color=red]進行登入檔的輪替 (log rotate):[/color]
linux 會主動的將系統所發生的各種資訊都記錄下來,這就是登入檔 (第十九章)。 由於系統會一直記錄登入資訊,所以登入檔將會越來越大!我們知道大型檔案不但佔容量還會造成讀寫效能的困擾, 因此適時的將登入檔資料挪一挪,讓舊的資料與新的資料分別存放,則比較可以有效的記錄登入資訊。這就是 log rotate 的任務!這也是系統必要的例行任務;
[color=orange]登入檔分析 logwatch 的任務:[/color]
如果系統發生了軟體問題、硬體錯誤、資安問題等,絕大部分的錯誤資訊都會被記錄到登入檔中, 因此系統管理員的重要任務之一就是分析登入檔。但你不可能手動透過 vim 等軟體去檢視登入檔,因為資料太複雜了! 我們的 centos 提供了乙隻程式『 [color=red]logwatch [/color]』來主動分析登入資訊,所以你會發現,你的 root 老是會收到標題為 logwatch 的信件,那是正常的!你最好也能夠看看該信件的內容喔!
[color=brown]建立 locate 的資料庫:[/color]
在第七章我們談到的 locate 命令時, 我們知道該命令是透過已經存在的檔名資料庫來進行系統上檔名的查詢。我們的檔名資料庫是放置到 /var/lib/mlocate/ 中。 問題是,這個資料庫怎麼會自動公升級啊?嘿嘿!這就是系統的例行性工作所產生的效果啦![color=red]系統會主動的進行 updatedb 喔![/color]
[color=blue]whatis 資料庫的建立:[/color]
與 locate 資料庫類似的,whatis 也是個資料庫,這個 whatis 是與 man page 有關的乙個查詢命令,不過要使用 whatis 命令時, 必須要擁有 whatis 資料庫,而這個資料庫也是透過系統的例行性工作排程來自動執行的哩!
[color=green]rpm 軟體登入檔的建立:[/color]
[color=red]rpm (第二十三章) 是一種軟體管理的機制。[/color]由於系統可能會常常變更軟體, 包括軟體的新安裝、非經常性公升級等,都會造成軟體檔名的差異。為了方便未來追蹤,系統也幫我們將檔名作個排序的記錄呢! 有時候系統也會透過排程來幫忙 rpm 資料庫的重新建置喔!
[color=darkred]移除快取檔:[/color]
某些軟體在執行中會產生一些快取檔,但是當這個軟體關閉時,這些快取檔可能並不會主動的被移除。 有些快取檔則有時間性,如果超過一段時間後,這個快取檔就沒有效用了,此時移除這些快取檔就是一件重要的工作! 否則磁碟容量會被耗光。系統透過例行性工作排程執行名為 tmpwatch 的命令來刪除這些快取檔呢!
[color=violet]與網路服務有關的分析行為:[/color]
其實你的系統會進行的例行性工作與你安裝的軟體多寡有關,如果你安裝過多的軟體,某些服務功能的軟體都會附上分析工具, 那麼你的系統就會多出一些例行性工作羅!像鳥哥的主機還多加了很多自己撰寫的分析工具,以及其他第三方協力軟體的分析軟體, 嘿嘿!俺的 linux 工作量可是非常大的哩!因為有這麼多的工作需要進行,所以我們當然得要了解例行性工作的處理方式羅!
**:
第十六章 什麼是例行性工作排程(定時任務)
每個人或多或少都有一些約會或者是工作,有的工作是例行性的,例如每年一次的加薪 每個月一次的工作報告 每週一次的午餐會報 每天需要的打卡等等 有的工作則是臨時發生的,例如剛好總公司有 來訪,需要你準備演講器材等等!用在生活上面,例如每年的愛人的生日 每天的起床時間等等 還有突發性的計算機大降價 啊!真...
第十六章 什麼是例行性工作排程(定時任務)
每個人或多或少都有一些約會或者是工作,有的工作是例行性的,例如每年一次的加薪 每個月一次的工作報告 每週一次的午餐會報 每天需要的打卡等等 有的工作則是臨時發生的,例如剛好總公司有 來訪,需要你準備演講器材等等!用在生活上面,例如每年的愛人的生日 每天的起床時間等等 還有突發性的計算機大降價 啊!真...
第十六章 多型性 一
第一節的內容是多重繼承,由於前面在繼承那一章已經粗略地了解了多種繼承,所以本節及後面幾節主要是說明 為什麼要使用多重繼承 include using namespace std class father 三角形 class trigon public shape double area 正方形 cl...