天天看點

系統資源監控、開機資訊檢視、記憶體使用檢視和使用者檢視

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
....(以下省略)....
           

繼續閱讀