1、Linux vmstat指令:監控系統資源
1.1、指令的意義及格式
意義:vmstat指令,是 Virtual Meomory Statistics(虛拟記憶體統計)的縮寫,可用來監控 CPU 使用、程序狀态、記憶體使用、虛拟記憶體使用、硬碟輸入/輸出狀态等資訊。
指令的格式(兩種):
[[email protected] ~]# vmstat [-a] [重新整理延時 重新整理次數]
[[email protected] ~]# vmstat [選項]
1.2、選項
- -a 的含義是用 inact/active(活躍與否) 來取代 buff/cache 的記憶體輸出資訊;
- -fs -f:顯示從啟動到目前為止,系統複制(fork)的程式數,此資訊是從 /proc/stat 中的 processes 字段中取得的。
- -s:将從啟動到目前為止,由一些事件導緻的記憶體變化情況清單說明。
- -S 機關 令輸出的資料顯示機關,例如用 K/M 取代 bytes 的容量。
- -d 列出硬碟有關讀寫總量的統計表。
- -p 分區裝置檔案名 檢視硬碟分區的讀寫情況。
1.3、舉例
[[email protected] 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、Linux dmesg指令:顯示開機資訊
2.1 指令的意義及格式
意義:無論是系統啟動過程中,還是系統運作過程中,隻要是核心産生的資訊,都會被存儲在系統緩沖區中,如果開機時來不及檢視相關資訊,可以使用 dmesg 指令将資訊調出,此指令常用于檢視系統的硬體資訊。(除此之外,開機資訊也可以通過 /var/log/ 目錄中的 dmesg 檔案進行檢視。)
格式:
[[email protected] ~]# dmesg
2.2 舉例
[[email protected] ~]# 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
[[email protected] ~]# dmesg | grep eth0
#檢視第一塊網卡的資訊
eth0:registered as PCnet/PCI II 79C970A
eth0:link up
eth0:no IPv6 routers present
3、Linux free指令:檢視記憶體使用狀态
3.1 指令的意義及格式
意義:free 指令用來顯示系統記憶體狀态,包括系統實體記憶體、虛拟記憶體(swap 交換分區)、共享記憶體和系統緩存的使用情況,其輸出和 top 指令的記憶體部分非常相似。
格式:
[[email protected] ~]# free [選項]
3.2 選項
- -b 以 Byte(位元組)為機關,顯示記憶體使用情況。
- -k 以 KB 為機關,顯示記憶體使用情況,此選項是 free 指令的預設選項。
- -m 以 MB 為機關,顯示記憶體使用情況。
- -g 以 GB 為機關,顯示記憶體使用情況。
- -t 在輸出的最終結果中,輸出記憶體和 swap 分區的總量。
- -o 不顯示系統緩沖區這一列。
- -s 間隔秒數 根據指定的間隔時間,持續顯示記憶體使用情況。
3.3舉例
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 725 666 59 0 132 287
-/+ buffers/cache: 245 479
Swap: 996 0 996
第一行顯示的是各個列的清單頭資訊,各自的含義如下所示:
- total 是總記憶體數;
- used 是已經使用的記憶體數;
- free 是空閑的記憶體數;
- shared 是多個程序共享的記憶體總數;
- buffers 是緩沖記憶體數;
- cached 是緩存記憶體數。
Mem 一行指的是記憶體的使用情況;-/buffers/cache 的記憶體數,相當于第一行的 used-buffers-cached。+/buffers/cache 的記憶體數,相當于第一行的 free+buffers+cached;Swap 一行指的就是 swap 分區的使用情況。可以看到,系統的實體記憶體為 725 MB,已經使用了 666 MB,空閑 59 MB。而 swap 分區總大小為 996 MB,目前尚未使用。
4、Linux w和who指令:檢視登陸使用者資訊
4.1 指令的意義及格式
意義:Linux 中,使用 w 或 who 指令都可以檢視伺服器上目前已登入的使用者資訊,兩者的差別在于,w 指令除了能知道目前已登陸的使用者資訊,還可以知道每個使用者執行任務的情況。
格式:
w:
[[email protected] ~]# w [選項] [使用者名]
w選項:
- -h 不顯示輸出資訊的标題
- -l 用長格式輸出
- -s 用短格式輸出,不顯示登陸時間,JCPU 和 PCPU 時間
- -V 顯示版本資訊
who:
[[email protected] ~]# who [選項] [file]
需要說明的是,who 指令預設是通過 /var/run/utmp 檔案來擷取登陸使用者資訊,但如果通過 file 指定另一個檔案,則 who 指令将不再預設讀取 /var/run/utmp 檔案,而是讀取該指定檔案來擷取資訊。
who選項:
- -a 列出所有資訊,相當于所有選項。
- -b 列出系統最近啟動的時間日期。
- -l 列出所有可登陸的終端資訊。
- -m 僅列出關于目前終端的資訊,who -m 指令等同于 who am i。
- -q 列出在本地系統上的使用者和使用者數的清單。
- -r 顯示目前系統的運作級别。
- -s 僅顯示名稱、線路和時間字段資訊,這是 who 指令的預設選項。
- -u 顯示目前每個使用者的使用者名、登陸終端、登陸時間、線路活動和程序辨別。
- -T 或 -w 顯示 tty 終端的狀态,“+”表示對任何人可寫,“-”表示僅對 root 使用者或所有者可寫,“?”表示遇到線路故障。
4.2 舉例
例1:顯示目前使用者登陸資訊
[[email protected] ~]# w
13:13:56 up 13:00, 1 user, load average: 0.08, 0.02, 0.01
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root tty1 - 11:04 0.00s 0.36s 0.00s -bash
root pts/0 192.168.0.108 13:15 0.00s 0.06s 0.02s w
上面的輸出資訊中,第一行其實和 top 指令的第一行非常類似,主要顯示了目前的系統時間、系統從啟動至今已運作的時間、登陸到系統中的使用者數和系統平均負載(平均負載(load average)指的是在 1 分鐘、5 分鐘、15 分鐘内系統的負載狀況)。
從第二行開始,顯示的是目前所有登陸系統的使用者資訊,第二行是使用者資訊的各列标題,從第三行開始每行代表一個使用者。具體含義如下:
- USER 登入到系統的使用者。
- TTY 登入終端。
- FROM 表示使用者從哪裡登陸進來,一般顯示遠端登陸主機的 IP 位址或者主機名。
- [email protected] 使用者登陸的日期和時間。
- IDLE 表示某個程式上次從終端開始執行到現在所持續的時間。
- JCPU 和該終端連接配接的所有程序占用的 CPU 運算時間。這個時間裡并不包括過去的背景作業時間,但是包括目前正在運作的背景作業所占用的時間。
- PCPU 目前程序所占用的 CPU 運算時間。
- WHAT 目前使用者正在執行的程序名稱和選項,換句話說,就是表示使用者目前執行的是什麼指令。
從 w 指令的輸出中已知,Linux 伺服器上已經登入了兩個 root 使用者,一個是從本地終端 1 登入的(tty1),另一個是從遠端終端 1 登入的(pts/0),登入的來源 IP 是 192.168.0.108。
例2:顯示系統最新啟動日期,以及每個使用者的登陸詳情、終端狀态
相比較 w 指令,who 指令隻能顯示目前登陸的使用者信心,但無法知曉每個使用者正在執行的指令:
[[email protected] ~]# who <--等同于 who -s
root tty1 2013-06-07 09:53
root pts/0 2013-06-07 09:53 (192.168.0.108)
#使用者名 登入終端 登入時間(登入來源IP)
5、Linux last和lastlog指令:檢視過去登陸的使用者資訊
5.1 指令的意義和格式
意義:last 指令可以檢視目前和過去登陸系統使用者的相關資訊;lastlog 指令可以檢視到每個系統使用者最近一次登陸系統的時間。
格式:
last:
[[email protected] ~]# last [選項]
在執行 last 指令時,它預設會讀取 /var/log/wtmp 日志檔案,這是一個二進制檔案,不能直接用 vi 編輯,隻能通過 last 指令調用。
lastlog 指令預設是去讀取 /var/log/lastlog 日志檔案的,這個檔案同樣是二進制檔案,不能直接用 vi 編輯,需要使用 lastlog 指令調用。
last選項:
- -a 把從何處登陸系統的主機名或 IP 位址顯示在最後一行。
- -R 不顯示登陸系統的主機名或 IP 位址。
- -x 顯示系統關機、重新開機以及執行等級的改變等資訊。
- -n 顯示列數 設定列出資訊的顯示列數。
- -d 将顯示的 IP 位址轉換成主機名稱。
lastlog:見例2
5.2 舉例:
例1:查詢目前和過去登入的使用者資訊。
[[email protected] ~]# last
root pts/0 192.168.0.108 Fri Jun 7 09:53 still logged in
root tty1 Fri Jun 7 09:53 still logged in
root pts/0 192.168.0.101 Fri Jun 7 06:53 - 09:52 (02:59)
root pts/1 192.168.0.103 Fri Jun 7 04:12 - 04:30 (00:18)
#使用者名 登入終端 登入IP 登入時間 - 退出時間(線上時間)
reboot system boot 2.6.32-279.el6.i Thu Jun 6 23:53 - 00:03 (00:09)
#還能看到系統的重新開機時間
…省略部分輸出…
例2:檢視登陸過目前系統使用者的最近一次登陸時間(lastlog指令)
[[email protected] ~]#lastlog
#使用者名 端口 來自 最後登陸時間
Username Port From Latest
root pts/1 192.168.1.100 Wed Mar 4 11:04:22 +0800 2009
bin **Never logged in**
....(中間省略)....
vbird1 pts/2 192.168.1.100 Wed Mar 4 13:15:56 +0800 2009
....(以下省略)....