歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux例行性工作排程

Linux例行性工作排程

日期:2017/2/28 14:24:19   编辑:Linux教程

1.例行性排程有兩中方式:

1)每隔一定周期就要來辦的事項,用crontab指令實現

2)突發性的,就是這次做完後,就沒有了用at指令實現,不過這個需要atd服務的支持

2.Linux常見的例行性任務有:

1)進行登錄檔的輪替:Linux會將系統所發生的各種信息都記錄下來,這就是登錄檔,隨著系統的運行這些登錄檔會越來越大,導致系統讀寫效能下降,因此就需要將這些數據按時間的新舊分別存放,這就是登錄檔的輪替任務

2)登錄文件分析:如果系統發生了軟件問題,硬件錯誤,資源安全問題等,絕大部分的錯誤都會被記錄到登錄文件中,因此系統管理員的重要任務之一就是分析登錄檔。但你不可能手動透過vim等軟件去監視登錄文件,因為數據太復雜了,因此系統提供了logwatch這只程序,來主動分析登錄信息。

3)locate數據庫的建立:存放在/var/lib/mlocate中,系統會主動在規定時間調用updatedb這條指令,更新這個數據庫

3)whatis數據庫的建立

4)RPM軟件登錄文件的建立:RPM是一種軟件管理機制。由於系統可能會常常變更軟件,包括軟件的新安裝,非經常性更新等,都會造成軟件文件名的差異。為了方便未來追蹤,系統也幫我們將文件名做個排序的記錄。有時候系統也會透過排程來幫忙RPM數據庫的重新建置

5)移除暫存檔:軟件運行會產生一些臨時文件,但軟件關閉後,這些臨時文件可能還存在,如果超出一定的時間後,這個暫存盤就沒有效用了,此時移除這些暫存盤就是一件重要的工作。否則磁盤會很快被耗光。

6)與網絡服務相關的分析行為:如果安裝了www網站服務軟件,那麼Linux通常會主動分析該軟件的登錄文件。同時某些憑證與認證的網絡信息是否過期問題,我們的Linux系統也會幫我們自行檢查

3.atd的啟動與at的運行方式:

1)啟動方式:/etc/init.d/atd restart(start ,stop)

2)at的運行方式:

a)先找尋/etc/at.allow這個檔案,寫在這個檔案中的使用者才能使用at,沒有在這個檔案中的使用者則不能使用at

b)如果/etc/at.allow不存在,就尋找/etc/at.deny這個檔案,若寫在這個at.deny的使用者則不能使用at,而沒有在這個at.deny檔案中的使用者,就可以使用at這個指令了

c)如果兩個檔案都不存在,那麼只有root可以使用at這個指令

3)通常系統默認所有的用戶都是可信任的,因此系統通常會保留一份空的/etc/at.deny檔案,不過萬一你不希望某些使用者使用at指令,將那個使用者的賬號寫入/etc/at.deny即可,一個賬號一行

4.at [-mldv] TIME;at -c 工作號碼:單一工作排程,參數,

1)at的工作完成後,及時沒有輸出信息,也要給使用者發郵件,告知使用者該工作已完成

2)-l:atq的別名,列出目前系統上面的所有該用戶的at排程

3)-d:at -d相當於atrm ,可以取消一個在at排程中的工作

4)-v:可以使用較明顯的時間格式列出at排程中的任務欄表

5)-c:可以列出後面接的該項工作的實際指令內容。

6)TIME:時間格式,這裡可以定義出設麼時候要進行at這項工作的時間,格式有

HH:MM,在今日的HH:MM時刻進行,若該時刻已超過,則明天的這個點進行此工作

HH:MM YYYY-MM-DD,強制規定在某年某月的某一天的特殊時刻進行該工作

HH:MM[ap|pm] [Month][Date],強制在當前年,指定月日進行

HH:MM[ap|pm]+number[minutes|hours|days|weeks],可以用now指代當前時間,即在某個時刻後的多久執行該操作。

7)當我們使用at時會進入一個atshell的環境來讓用戶下達工作指令,此時,建議你最好使用絕對路徑來下達你的指令,比較穩定,因為指令的下達與PATH變量有關,同時與當時的工作目錄還有關。at在運行時,會跑到當時下達at指令的那個工作目錄去執行指令

8)在at指令中下達echo "Hello"。不會顯示到屏幕上,因為at的執行與終端機環境有關,而與標准輸出或標准錯誤輸出無關,如果想在終端機上看到信息可以通過echo "Hello" > /dev/tty1這個指令來實現。

9)由於at工作排程的使用上,系統會將該項at工作獨立出你的bash環境中,直接交給系統的atd程序來接管,因此,當你下達了at的工作之後就可以立刻脫機了,剩下的工作交給Linux管理即可。如果有長時間的網絡管理工作時,使用at可以讓你免除網絡斷線的困擾。

5.batch:系統有空時才進行背景任務。batch是利用at來進行指令的下達。只是加入了一些控制參數。這個batch會在CPU工作負載小於0.8的時候,才進行工作你所下達的工作任務。負載是指CPU在單位時間所負責的工作數量(進程數),不同於CPU利用率,比如有一只程序他需要一直使用CPU的運算功能,那麼此時CPU的使用率可能達到100%,但是CPU的工作負載則是趨近於1,如果同時執行兩只程序,則負載是2

所以CPU的負載反映的是CPU需要在多少個不同工作之間切換。

6.循環執行的例行性工作排程:由cron(crond)這個系統服務來控制,同樣可以通過/etc/cron.allow,/etc/cron.allow來進行限制該服務的使用名單。當用戶使用crontab這個指令後,該項記錄會被記錄到/var/spool/cron/裡面去,並且以賬號作為判斷。比如huge執行了crontab這個指令,他的工作會被記錄到/var/spool/cron/huge裡去。但不要直接使用vi直接編輯該檔案,因為可能輸入語法錯誤。會導致無法執行cron。另外,cron執行的每一項工作都會被記錄到/var/log/cron這個登錄檔中,所以可以根據這個檔案,來擦看是否有木馬植入。

7.crontab [-u username] [-l|-e|-r]:循環執行例程任務,參數

1)-u:只有root才能執行這個任務,亦即幫其他使用者建立/移除crontab工作排程

2)-e:編輯crontab的工作內容

3)-l:查閱crontab的工作內容

4)-r:移除所有crontab的工作內容,若僅移除一項,使用-e比較好。

每項指令都有六個字段,含義依次為:分鐘(0-59)、小時(0-23)、日期(1-31)、月份(1-12)、周(0-7)、指令。其中0和7都代表周日。

還有一些輔助字符:

a)*:代表任何時刻都接受的意思。

b),:代表分割時段的意思,比如下達3到6點,則是這樣的:0 3,6 * * * command

c)-:代表一段時間范圍,比如8到12點之間的每小時的20分鐘進行一項工作:20 8-12 * * * command

d)/n(斜線):n表示數字,亦即每隔n單位間隔的意思,例如每5分鐘進行一次,則:* /5 * * * * command。

8./etc/crontab:系統配置文件,crontab -e是針對使用者的cron來設計的,如果是系統例行性任務時,只需編輯.etc/crontab這個檔案就可以了,cron這個服務的最低偵測限制是分鐘,所以cron會每分鐘去讀取一次/etc/crontab與/usr/bin/crontab這個執行檔,所以,只要你編輯完/etc/crontab這個檔案,並將它保存之後,那麼cron的設定就自動會來執行了。

查看該文件會發現有一個PATH,代表執行文件搜尋路徑,MAILTO=root:代表若有額外的STDOUT,將以email將數據傳給該指定的用戶。

/etc/crontab這個檔案支持兩種指令下達方式:

1)指令型態,即直接在後面跟指令

2)目錄規劃,使用run-parts指令,將要執行的腳本都放到這個目錄下面,即可

9.一些注意事項:

1)資源分配不均,包括流量,區域內其他PC的流量偵測,CPU使用率,RAM使用率,在線人數實時偵測。

2)取消不要輸出的項目

3)安全監測,在/var/log/cron線面查看木馬

4)周與日月不可共存

10.anacron:處理非24小時一直啟動的Linux系統的crontab的執行,所以anacron並不能指定合適執行某項任務,而是以天為單位或者是在開機後立即進行anacron的動作,他會去偵測停機期間應該進行但是沒有進行的crontab任務,並將該任務執行一遍後,anacron就會自動停止了。

anacron其實是一只程序,而不是一個服務。

11.anacron [-sfn] [job];anacron -u [job]:參數,

1)開始一連續的執行各項工作(job),會依據時間記錄文件的數據判斷是否進行

2)-f:強制進行,而不去判斷事件記錄文件的時間戳

3)-n:立刻進行未進行的任務,而不延遲等待時間

4)-u:僅更新時間記錄文件的時間戳,不進行任何工作

5)job:有/etc/anacrontab定義的各項工作名稱

12.當我們下達anacron指令後,它會運作:

1)由/etc/anacrontab分析到cron.daily這項工作名稱的天數為1天

2)由/var/spool/anacron/cron.daily取出最近一次執行anacron的時間戳

3)由上個步驟與目前的時間比較,若差異天數為設定的天數以上(包含這一天,/etc/anacrontab的第一個參數)就准備進行該指令

4)若准備進行指令,根據/etc/anacrontab的設定,將延遲設定的分鐘數(/etc/anacrontab的第二個參數)

5)延遲時間過後,開始執行後續指令,亦即,run -parts 後面的指令

6)執行完畢,anacron程序結束

13.chkconfig --list anacron:查看anacron是否開機事主動執行。

Copyright © Linux教程網 All Rights Reserved