詳見:http://c.biancheng.net/view/1090.html
一、at定時任務命令
查看是否已經安裝at軟件包:
[root@localhost ~]# rpm -q at
at-3.1.13-20.el7x86_64
未安裝的話通過以下命令安裝
root@localhost ~]# yum -y install at
#省略輸出信息,最終出現 Complete!,證明安裝成功。
除此之外,at 命令要想正確執行,還需要 atd 服務的支持。atd 服務是獨立的服務,啟動的命令如下:
[root@localhost ~]# service atd start
正在啟動 atd: [確定]
如果想讓 atd 服務開機時自啟動,則可以使用如下命令:
[root@localhost ~]# chkconfig atd on
當然,獨立服務的自啟動也可以修改 /etc/rc.local 配置文件,具體怎么做看個人習慣。
安裝好 at 軟件包並開啟 atd 服務之后,at 命令才可以正常使用,不過在此之前,我們還要學習一下 at 命令的訪問控制。
訪問控制指的是允許哪些用戶使用 at 命令設定定時任務,或者不允許哪些用戶使用 at 命令。大家可以將其想象成設定黑名單或白名單,這樣更容易理解。
at 控制訪問依靠 /etc/at.allow(白名單,允許用戶使用at命令) 和 /etc/at.deny(黑名單,不允許用戶使用at命令)
二、crontab 重復執行定時命令
前面學習了 at 命令,此命令在指定的時間僅能執行一次任務,但在實際工作中,系統的定時任務一般是需要重復執行的。而 at 命令顯然無法滿足需求,這是就需要使用 crontab 命令來執行循環定時任務。
在介紹 crontab 命令之前,我們首先要介紹一下 crond,因為 crontab 命令需要 crond 服務支持。crond 是 Linux 下用來周期地執行某種任務或等待處理某些事件的一個守護進程,和 Windows 中的計划任務有些類似。
crond 服務的啟動和自啟動方法如下:
[root@localhost ~]# service crond restart
停止 crond: [確定]
正在啟動 crond: [確定]
#重新啟動crond服務
[root@localhost ~]# chkconfig crond on
#設定crond服務為開機自啟動
其實,在安裝完成操作系統后,默認會安裝 crond 服務工具,且 crond 服務默認就是自啟動的。crond 進程每分鍾會定期檢查是否有要執行的任務,如果有,則會自動執行該任務。
接下來,在介紹 crontab 命令。該命令和 at 命令類似,也是通過 /etc/cron.allow 和 /etc/cron.deny 文件來限制某些用戶是否可以使用 crontab 命令的。而且原則也非常相似:
-
當系統中有 /etc/cron.allow 文件時,只有寫入此文件的用戶可以使用 crontab 命令,沒有寫入的用戶不能使用 crontab 命令。同樣,如果有此文件,/etc/cron.deny 文件會被忽略,因為 /etc/cron.allow 文件的優先級更高。
-
當系統中只有 /etc/cron.deny 文件時,寫入此文件的用戶不能使用 crontab 命令,沒有寫入文件的用戶可以使用 crontab 命令。
-
這個規則基本和 at 命令的規則一致,同樣是 /etc/cron.allow 文件比 /etc/cron.deny 文件的優先級高,Linux 系統中默認只有 /etc/cron.deny 文件。
每個用戶都可以實現自己的 crontab 定時任務,只需使用這個用戶身份執行“crontab -e”命令即可。當然,這個用戶不能寫入 /etc/cron.deny 文件。
crontab 命令的基本格式如下:
[root@localhost ~]# crontab [選項] [file]
注意,這里的 file 指的是命令文件的名字,表示將 file 作為 crontab 的任務列表文件並載入 crontab,若在命令行中未指定文件名,則此命令將接受標准輸入(鍵盤)上鍵入的命令,並將它們鍵入 crontab。
與此同時,表 1 羅列出了此命令常用的選項及功能。
選項
|
功能
|
-u user
|
用來設定某個用戶的 crontab 服務,例如 "-u demo" 表示設備 demo
用戶的 crontab 服務,此選項一般有 root 用戶來運行。
|
-e
|
編輯某個用戶的 crontab 文件內容。如果不指定用戶,則表示編輯當前用戶的 crontab 文件。
|
-l
|
顯示某用戶的 crontab 文件內容,如果不指定用戶,則表示顯示當前用戶的 crontab 文件內容。
|
-r
|
從 /var/spool/cron 刪除某用戶的 crontab 文件,如果不指定用戶,則默認刪除當前用戶的 crontab 文件。
|
-i
|
在刪除用戶的 crontab 文件時,給確認提示。
|
其實 crontab 定時任務非常簡單,只需執行“crontab -e”命令,然后輸入想要定時執行的任務即可。不過,當我們執行“crontab -e”命令時,打開的是一個空文件,而且操作方法和 Vim 是一致的。那么,這個文件的格式才是我們真正需要學習的內容。文件格式如下:
[root@localhost !]# crontab -e
#進入 crontab 編輯界面。會打開Vim編輯你的任務
* * * * * 執行的任務
這個文件中是通過 5 個“*”來確定命令或任務的執行時間的,這 5 個“*”的具體含義如表 2 所示。
項目
|
含義
|
范圍
|
第一個"*"
|
一小時當中的第幾分鍾(minute)
|
0~59
|
第二個"*"
|
一天當中的第幾小時(hour)
|
0~23
|
第三個"*"
|
一個月當中的第幾天(day)
|
1~31
|
第四個"*"
|
一年當中的第幾個月(month)
|
1~12
|
第五個"*"
|
一周當中的星期幾(week)
|
0~7(0和7都代表星期日)
|
在時間表示中,還有一些特殊符號需要學習,如表 3 所示。
特殊符號
|
含義
|
*(星號)
|
代表任何時間。比如第一個"*"就代表一小時種每分鍾都執行一次的意思。
|
,(逗號)
|
代表不連續的時間。比如"0 8,12,16***命令"就代表在每天的 8 點 0 分、12 點 0 分、16 點 0 分都執行一次命令。
|
-(中杠)
|
代表連續的時間范圍。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 點 0 分執行命令。
|
/(正斜線)
|
代表每隔多久執行一次。比如"*/10****命令",代表每隔 10 分鍾就執行一次命令。
|
當“crontab -e”編輯完成之后,一旦保存退出,那么這個定時任務實際就會寫入 /var/spool/cron/ 目錄中,每個用戶的定時任務用自己的用戶名進行區分。而且 crontab 命令只要保存就會生效,只要 crond 服務是啟動的。知道了這 5 個時間字段的含義,我們多舉幾個時間的例子來熟悉一下時間字段,如表 4 所示。
時間
|
含義
|
45 22 ***命令
|
在 22 點 45 分執行命令
|
0 17 ** 1命令
|
在每周一的 17 點 0 分執行命令
|
0 5 1,15**命令
|
在每月 1 日和 15 日的凌晨 5 點 0 分執行命令
|
40 4 ** 1-5命令
|
在每周一到周五的凌晨 4 點 40 分執行命令
|
*/10 4 ***命令
|
在每天的凌晨 4 點,每隔 10 分鍾執行一次命令
|
0 0 1,15 * 1命令
|
在每月 1 日和 15 日,每周一個 0 點 0 分都會執行命令,注意:星期幾和幾日最好不要同時出現,因為它們定義的都是天,非常容易讓管理員混淆
|
現在我們已經對這 5 個時間字段非常熟悉了,可是在“執行的任務”字段中都可以寫什么呢?既可以定時執行系統命令,也可以定時執行某個 Shell 腳本,這里舉幾個實際的例子。
【例 1】讓系統每隔 5 分鍾就向 /tmp/test 文件中寫入一行“11”,驗證一下系統定時任務是否會執行。
[root@localhost ~]# crontab -e
#進入編輯界面
*/5 * * * * /bin/echo "11" >> /tmp/test
這個任務在時間工作中沒有任何意義,但是可以很簡單地驗證我們的定時任務是否可以正常執行。如果覺得每隔 5 分鍾太長,那就換成“*”,讓它每分鍾執行一次。而且和 at 命令一樣,如果我們定時執行的是系統命令,那么最好使用絕對路徑。
【例 2】讓系統在每周二的凌晨 5 點 05 分重啟一次。
[root@localhost ~]# crontab -e
5.5 * * 2 /sbin/shutdown -r now
如果服務器的負載壓力比較大,則建議每周重啟一次,讓系統狀態歸零。比如絕大多數游戲服務器每周維護一次,維護時最主要的工作就是重啟,讓系統狀態歸零。這時可以讓我們的服務器自動來定時執行。
【例 3】在每月 1 日、10 日、15 日的凌晨 3 點 30 分都定時執行日志備份腳本 autobak.sh。
[root@localhost ~]# crontab -e
30.3 1,10,15 * * /root/sh/autobak.sh
這些定時任務保存之后,就可以在指定的時間執行了。我們可以使用命令來查看和刪除定時任務,命令如下:
[root@localhost ~]# crontab -l
#查看root用戶的crontab任務
*/5 * * * * /bin/echo "11" >> /tmp/test
5.5 * * 2 /sbin/shutdown -r now
30.3 1,10,15 * * /root/sh/autobak.sh
[root@localhost ~]# crontab -r
#刪除root用戶所有的定時任務。如果只想刪除某個定時任務,則可以執行“crontab -e”命令進入
#編輯模式手工刪除
[root@localhost ~]# crontab -l
no crontab for root
#刪除后,再查詢就沒有root用戶的定時任務了
在書寫 crontab 定時任務時,需要注意以下幾個事項:
-
6 個選項都不能為空,必須填寫。如果不確定,則使用“*”代表任意時間。
-
crontab 定時任務的最小有效時間是分鍾,最大有效時間是月。像 2018 年某時執行、3 點 30 分 30 秒這樣的時間都不能被識別。
-
在定義時間時,日期和星期最好不要在一條定時任務中出現,因為它們都以天為單位,非常容易讓管理員混淆。
-
在定時任務中,不管是直接寫命令,還是在腳本中寫命令,最好都使用絕對路徑。有時使用相對路徑的命令會報錯。
系統的crontab設置
“crontab -e”是每個用戶都可以執行的命令,也就是說,不同的用戶身份可以執行自己的定時任務。但是有些定時任務需要系統執行,這時就需要編輯 /etc/crontab 這個配置文件了。
當然,並不是說寫入 /etc/crontab 配置文件中的定時任務在執行時不需要用戶身份,而是“crontab -e”命令在定義定時任務時,默認用戶身份是當前登錄用戶。而在修改 /etc/crontab 配置文件時,定時任務的執行者身份是可以手工指定的。這樣定時任務的執行會更加靈活,修改起來也更加方便。
那我們打開這個文件看看吧,如下:
[root@localhost ~]# vi /etc/crontab
SHELL=/bin/bash
#標識使用哪種Shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#指定PATH環境變量。crontab使用自己的PATH,而不使用系統默認的PATH,所以在定時任務中出現的
#命令最好使用大寫
MAILTO=root
#如果有報錯輸出,或命令結果有輸出,則會向root發送信息
HOME=/
#標識主目錄
# For details see man 4 crontabs
#提示大家可以去“man 4 crontabs”查看幫助
# Example of job definition:
#.——————————— minute (0 - 59)
# |.———————— hour (0 - 23)
# | |.——————— day of month (1 - 31)
# | | |.———— month (1 - 12) OR jan,feb,mar,apr……
# | | | | .———day of week(0-6)(Sunday=0 or 7)OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
#分 時日月周執行者身份命令
#列出文件格式,並加入了注釋
在 CentOS 6.x 中,/etc/crontab 文件也發生了變化。在 CentOS 5.x 中,這個文件的內容大概是這樣子的:
#以下輸出在CentOS 5.5中
[root@sc ~]# vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02.4 * * * root run-parts /etc/cron.daily
22.4 * * 0 root run-parts /etc/cron.weekly
42.4 1 * * root run-parts /etc/cron.monthly
在 CentOS 5.x 中,/etc/crontab 文件會使用 run-parts 腳本執行 /etc/cron.{daily,weekly,monthly} 目錄中的所有文件。這個 run-parts 其實是一個 Shell 腳本,保存在 /usr/bin/run-parts 中,它的作用就是把其后面跟隨的目錄中的所有可執行文件依次執行。也就是說,如果我們想讓某個腳本在每天都執行一次,那么可以不用手工去寫定時任務,而只需要給這個腳本賦予執行權限,並把它放入 /etc/cron.daily/ 目錄中,這樣這個腳本就會在每天的凌晨 4 點 02 分執行了。
但是在 CentOS 6.x 中,/etc/crontab 文件中不再有相關的段落,那么 run-ptars 這種定時任務的執行方法是否不可用了呢?
我們看到 /etc/crontab 中有一句提示,讓我們“man 4 crontabs”來查看幫助,那么我們就看看這個幫助吧!在這個幫助中,寫明了“在舊版本的 crontab 配置文件中,通過 run-parts 腳本來調用 cron.{daily,weekly,monthly} 目錄,定時執行這些目錄中的腳本。在當前系統中,為了避免 cron 和 anacron 之間產生沖突,只要 anacron 已經安裝,就使用 anacron 來執行這些目錄中的腳本。具體可以查看 anacron(8) 的幫助”。對於 anacron 的用法,后續章節再詳解介紹。
其實,對用戶來講,並不需要知道這個定時任務到底是由哪個程序調用的。我們需要知道的事情是如何使用系統的 crontab 設置。對此,新、老版本的 CentOS 沒有區別,配置方法都有兩種。
第一種方法就是把需要定時執行的工作寫成腳本程序,並賦予執行權限,然后直接把這個腳本復制到 /etc/cron.{daily,weekly,monthly} 目錄中的任意一個。比如,我需要讓某個腳本每周執行,就把這個腳本復制到 /etc/cron.weekly/ 目錄中。這樣這個腳本就會每周執行一次,具體的執行時間要參考 anacron 的配置文件。
第二種方法就是修改 /etc/crontab 這個配置文件,加入自己的定時任務,不過需要注意指定腳本的執行者身份。例如:
[root@localhost ~]# vi /etc/crontab
…省略部分輸出…
* * * * * root run-parts /root/cron/
#讓系統每分鍾都執行一次/root/cron/目錄中的腳本,腳本執行者是root用戶
#雖然在CentOS 6.x中不直接通過此配置文件調用/etc/cron.{daily,weekly,monthly}這些目錄,但是run-parts腳本還是可以使用的。所以我完全可以參照CentOS 5.x的方法來寫定時任務
#使用run-parts腳本調用並執行/root/cron/目錄中所有的可執行文件
[root@localhost ~]# mkdir cron
#建立/root/cron/目錄
[root@localhost cron]# vi /root/cron/hello.sh
#/bin/bash
echo "hello" >> /root/cron/hello.log
#在/root/cron/hello.log文件中寫入“hello”
[root@localhost cron]# chmod 755 hello.sh
#賦予執行權限
#因為hello.sh腳本放入了/root/cron/目錄中,所以每分鍾執行一次。
只要保存 /etc/crontab 文件,這個定時任務就可以執行了。當然要確定 crond 服務是運行的。
這兩種方法都是可以使用的,具體看個人的習慣。不過,要想修改 /etc/crontab 文件,必須是 root 用戶,普通用戶不能修改,只能使用用戶身份的 crontab 命令。
三、Linux anacron命令用法詳解
anacron 是用來做什么的呢?設想這樣一個場景,Linux 服務器會在周末關機兩天,但是設定的定時任務大多在周日早上進行,但在這個時間點,服務器又處於關機狀態,導致系統很多定時任務無法運行。
又比如,我們需要在凌晨 5 點 05 分執行系統的日志備份,但 Linux 服務器不是 24 小時開機的,在晚上需要關機,白天上班之后才會再次開機,在這個定時任務的執行時間我們的服務器剛好沒有開機,那么這個定時任務就不會執行了。anacron 就是用來解決這個問題的。
anacron 會以 1 天、1周(7天)、一個月作為檢測周期,判斷是否有定時任務在關機之后沒有執行。如果有這樣的任務,那么 anacron 會在特定的時間重新執行這些定時任務。
那么,anacron 是如何判斷這些定時任務已經超過執行時間的呢?這就需要借助 anacron 讀取的時間記錄文件。anacron 會分析現在的時間與時間記錄文件所記載的上次執行 anacron 的時間,將兩者進行比較,如果兩個時間的差值超過 anacron 的指定時間差值(一般是 1 天、7 天和一個月),就說明有定時任務沒有執行,這時 anacron 會介入並執行這個漏掉的定時任務,從而保證在關機時沒有執行的定時任務不會被漏掉。
在 CentOS 6.x 中,使用 cronie-anacron 軟件包取代了 vixie-cron 軟件包。而且在原先 CentOS 版本的 /etc/cron.{daily,weekly,monthly} 目錄中的定時任務會同時被 cron 和 anacron 調用,這樣非常容易出現重復執行同一個定時任務的錯誤。因此,在 CentOS 6.x 中,/etc/cron.{daily,weekly,monthly} 目錄中的定時任務只會被 anacron 調用,從而保證這些定時任務只會在每天、每周或每月定時執行一次,而不會重復執行。
不僅如此,在 CentOS 6.x 中,anacron 還有一個變化,那就是 anacron 不再是單獨的服務,而變成了系統命令。也就是說,我們不再使用“service anacron restart”命令來管理 anacron 服務了,而需要使用 anacron 命令來管理 anacron 工作。
anacron命令的基本格式如下:
[root@localhost ~]# anacron [選項] [工作名]
這里的工作名指的是依據 /etc/anacrontab 文件中定義的工作名。表 1 羅列出了此命令常用的幾個選項及各自的功能。
選項
|
功能
|
-f
|
強制執行相關工作,忽略時間戳。
|
-u
|
更新 /var/spool/anacron/cron.{daily,weekly,monthly} 文件中的時間戳為當前日期,但不執行任何工作。
|
-s
|
依據 /etc/anacrontab 文件中設定的延遲時間順序執行工作,在前一個工作未完成前,不會開始下一個工作。
|
-n
|
立即執行 /etc/anacrontab 中所有的工作,忽略所有的延遲時間。
|
-q
|
禁止將信息輸出到標准錯誤,常和 -d 選項合用。
|
在當前的 Linux 中,其實不需要執行任何 anacron 命令,只需要配置好 /etc/anacrontab 文件,系統就會依賴這個文件中的設定來通過 anacron 執行定時任務了。那么,關鍵就是 /etc/anacrontab 文件的內容了。這個文件的內容如下:
[root@localhost ~]# vi /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
#前面的內容和/etc/crontab類似
#the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
#最大隨機廷遲
#the jobs will be started during the following hours only
START_H0URS_RANGE=3-22
#fanacron的執行時間范圍是3:00~22:00
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
#每天開機 5 分鍾后就檢查 /etc/cron.daily 目錄內的文件是否被執行,如果今天沒有被執行,那就執行
7 25 cron.weekly nice run-parts /etc/cron.weekly
#每隔 7 天開機后 25 分鍾檢查 /etc/cron.weekly 目錄內的文件是否被執行,如果一周內沒有被執行,就會執行
©monthly 45 cron.monthly nice run-parts /etc/cron.monthly
#每隔一個月開機后 45 分鍾檢查 /etc/cron.monthly 目錄內的文件是否被執行,如果一個月內沒有被執行,那就執行
在這個文件中,“RANDOM_DELAY”定義的是最大隨機延遲,也就是說,cron.daily 工作如果超過 1 天沒有執行,則並不會馬上執行,而是先延遲強制延遲時間,再延遲隨機延遲時間,之后再執行命令;“START_HOURS_RANGE”的是定義 anacron 執行時間范圍,anacron 只會在這個時間范圍內執行。
我們用 cron.daily 工作來說明一下 /etc/anacrontab 的執行過程:
-
讀取 /var/spool/anacron/cron.daily 文件中 anacron 上一次執行的時間。
-
和當前時間比較,如果兩個時間的差值超過 1 天,就執行 cron.daily 工作。
-
只能在 03:00-22:00 執行這個工作。
-
執行工作時強制延遲時間為 5 分鍾,再隨機延遲 0~45 分鍾。
-
使用 nice 命令指定默認優先級,使用 run-parts 腳本執行 /etc/cron.daily 目錄中所有的可執行文件。
大家會發現,/etc/cron.{daily,weekly,monthly} 目錄中的腳本在當前的 Linux 中是被 anacron 調用的,不再依靠 cron 服務。不過,anacron 不用設置多余的配置,我們只需要把需要定時執行的腳本放入 /etc/cron.{daily,weekly,monthly} 目錄中,就會每天、每周或每月執行,而且也不再需要啟動 anacron 服務了。如果需要進行修改,則只需修改 /etc/anacrontab 配置文件即可。
比如,我更加習慣讓定時任務在凌晨 03:00-05:00 執行,就可以進行如下修改:
[root@localhost ~] # vi /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL-/bin/sh
PATH-/sbin:/bin:/usr/sbin:/usr/bin MAILTO-root
# the maximal random delay added to the base delay of the jobs RANDOM_DELAY=0
#把最大隨機廷遲改為0分鍾,不再隨機廷遲
# the jobs will be started during the following hours only START_HOORS_RANGE=3-5
#執行時間范圍為03:00—05:00
#period in days delay in minutes job-identifier command
1 0 cron.daily nice run-parts /etc/cron.daily
7 0 cron.weekly nice run-parts /etc/cron.weekly
@monthly 0 cron.monthly nice run-parts /etc/cron.monthly
#把強制延遲也改為0分鍾,不再強制廷遲
這樣,所有放入 /etc/cron.{daily,weekly,monthly} 目錄中的腳本都會在指定時間執行,而且也不怕服務器萬一關機的情況了。
四、Linux vmstat命令詳解:監控系統資源
如果你想動態的了解一下系統資源的使用狀況,以及查看當前系統中到底是哪個環節最占用系統資源,就可以使用 vmstat 命令。
vmstat命令,是 Virtual Meomory Statistics(虛擬內存統計)的縮寫,可用來監控 CPU 使用、進程狀態、內存使用、虛擬內存使用、硬盤輸入/輸出狀態等信息。此命令的基本格式有如下 2 種:
[root@localhost ~]# vmstat [-a] [刷新延時 刷新次數]
[root@localhost ~]# vmstat [選項]
-a 的含義是用 inact/active(活躍與否) 來取代 buff/cache 的內存輸出信息。除此之外,表 1 羅列出了 vmstat 命令的第二種基本格式中常用的選項及各自的含義。
選項
|
含義
|
-fs
|
-f:顯示從啟動到目前為止,系統復制(fork)的程序數,此信息是從 /proc/stat 中的 processes 字段中取得的。
-s:將從啟動到目前為止,由一些事件導致的內存變化情況列表說明。
|
-S 單位
|
令輸出的數據顯示單位,例如用 K/M 取代 bytes 的容量。
|
-d
|
列出硬盤有關讀寫總量的統計表。
|
-p 分區設備文件名
|
查看硬盤分區的讀寫情況。
|
例如:
[root@localhost proc]# vmstat 1 3
#使用vmstat檢測,每隔1秒刷新一次,共刷新3次
procs ——memory—— swap —io system ——cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 407376 55772 84644 0 0 5 2 9 10 0 0 100 0 0
0 0 0 407368 55772 84644 0 0 0 0 12 10 0 0 100 0 0
0 0 0 407368 55772 84644 0 0 0 0 15 13 0 0 100 0 0
該命令輸出信息中,各個字段以及含義如表 2 所示。
字段
|
含義
|
procs
|
進程信息字段:
|
memory
|
內存信息字段:
|
swap
|
交換分區信息字段:
這兩個數越大,表明數據需要經常在磁盤和內存之間進行交換,系統性能越差。
|
io
|
磁盤讀/寫信息字段:
這兩個數越大,代表系統的 I/O 越繁忙。
|
system
|
系統信息字段:
這兩個數越大,代表系統與接口設備的通信越繁忙。
|
cpu
|
CPU信息字段:
|
本機是一台測試用的虛擬機,並沒有多少資源被占用,所以資源占比都比較低。如果服務器上的資源占用率比較高,那么使用 vmstat 命令查看到的參數值就會比較大,我們就需要手工進行干預。如果是非正常進程占用了系統資源,則需要判斷這些進程是如何產生的,不能一殺了之;如果是正常進程占用了系統資源,則說明服務器需要升級了。
五、Linux dmesg命令:顯示開機信息
通過學習《
Linux 啟動管理》一章可以知道,在系統啟動過程中,內核還會進行一次系統檢測(第一次是 BIOS 進行加測),但是檢測的過程不是沒有顯示在屏幕上,就是會快速的在屏幕上一閃而過那么,如果開機時來不及查看相關信息,我們是否可以在開機后查看呢?
答案是肯定的,使用 dmesg 命令就可以。無論是系統啟動過程中,還是系統運行過程中,只要是內核產生的信息,都會被存儲在系統緩沖區中,如果開機時來不及查看相關信息,可以使用 dmesg 命令將信息調出,此命令常用於查看系統的硬件信息。
除此之外,開機信息也可以通過 /var/log/ 目錄中的 dmesg 文件進行查看。
dmesg 命令的用法很簡單,基本格式如下:
[root@localhost ~]# dmesg
例如:
[root@localhost ~]# dmesg | grep CPU
#查看CPU的信息
Transmeta TransmetaCPU
SMP:Allowing 1 CPUs, 0 hotplug CPUs
NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:1 nr_node_ids:1
PERCPU:Embedded 14 pages/cpu @c1a00000 s35928 r0 d21416 u2097152
Initializing CPU#0
CPU:Physical Processor ID:0
mce:CPU supports 0 MCE banks
CPU0:Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz stepping 09
Brought up 1 CPUs
microcode:CPU0 sig=0x306a9, pf=0x1, revision=0x12
[root@localhost ~]# dmesg | grep eth0
#查看第一塊網卡的信息
eth0:registered as PCnet/PCI II 79C970A
eth0:link up
eth0:no IPv6 routers present
六、free命令
free 命令:
內存在使用的時候使用的就是 buffer 和cached
total:內存總量大小
used:代表內存已經分配出去多大的buffer和cache
free: 還沒有被分配為buffer和cache的內存大小
total = used+free
shared: 是多個進程共享的內存總數;
buffers:未使用的buffer大小
cached:未使用的cache大小
-/+ buffers/cache:已經使用的buffers和cache總大小(c1) 總共可以被當作buffer和cache來用的內存有多少(c2) 相加===total
used = buffers+cache+buffers/cache
c2 = buffers+cache+free