Linux系統資源檢視 之 資源資訊
Linux系統資源檢視 之 資源資訊
1. 系統
版本資訊
核心版本
使用uname
命令:
- -a : 檢視所有系統資訊
- -r : 檢視核心版本資訊
- -s : 檢視核心名稱
程式碼如下:
[[email protected] ~]$ uname -a
Linux niesh 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] ~]$ uname -r
3.10.0-327.el7.x86_64
[[email protected] ~]$ uname -s
Linux
- 發行版本
使用lsb_release
命令 (貌似在Ubuntu上無此命令)
程式碼如下:
[[email protected] ~]$ lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.2.1511 (Core) Release: 7.2.1511 Codename: Core
位數
注意,Linux下暫沒有命令可以檢視系統位數,但是我們可以通過檢視系統可執行程式(即elf)的位數進行判定:(可以看到我的Linux為64-bit)
程式碼如下:
[[email protected] ~]# file /bin/cat /bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=03fda19cacc76ee7464947e29ed25552138ae50e, stripped
主機名稱
程式碼如下:
[[email protected] ~]# hostname
niesh
檔案系統
可採用 df -Th
進行檢視:(主要看根目錄的檔案系統,此處為 xfs)
程式碼如下:
[[email protected] ~]# df -Th
檔案系統 型別 容量 已用 可用 已用% 掛載點
/dev/mapper/centos_niesh-root xfs 18G 9.1G 8.5G 52% /
devtmpfs devtmpfs 726M 0 726M 0% /dev
tmpfs tmpfs 741M 100K 741M 1% /dev/shm
tmpfs tmpfs 741M 9.1M 732M 2% /run
/dev/sda1 xfs 497M 158M 339M 32% /boot
2. 使用者登入
登入的使用者名稱
程式碼如下:
[[email protected] ~]# whoami
root
活動使用者
w:
檢視已經登入的使用者(詳細資訊)
who:
檢視登陸的使用者(使用者名稱,終端,登入時間)
- w:
程式碼如下:
[[email protected] ~]# w
17:54:50 up 8:15, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
niesh :0 :0 09:40 ?xdm? 3:35 0.32s gdm-session-wor
niesh pts/0 192.168.139.1 09:41 3:33m 0.10s 0.10s -bash
niesh pts/1 192.168.139.1 09:41 58.00s 0.24s 0.17s sshd: niesh [pr
第一行:系統的基本資訊:
- 系統的當前時間:17:54:50
- 從上次啟動到現在的時間:8:15 (8小時15分鐘)
- 有多少使用者登入到本機: 3 (3個),注意,同一個使用者可重複登入
- 系統平均負載:過去1min(0.00), 5min(0.01), 10min(0.05)
第二行,8個欄位,顯示使用者的詳細資訊:
- User: 使用者名稱(相同使用者名稱代表我登入了多次)
- TTY:使用者登入的終端代號,TTY1-TTY6分別代表本機上的1到6號的虛擬主控臺。PTS表示使用者是通過遠端登陸的。如果數字為:0則表示使用者從XWindow登入系統
- From: 從何處登入,"0"表示本機登入,IP地址為登入的地址
- [email protected]:登入的時間點
- IDLE:使用者登入後的閒置時間
- JCPU:使用者所採用的終端所有相關的程式執行時,所消耗的CPU時間
- PCUP:執行後面
WHAT
所耗費的時間- WHAT:表示當前使用者正在做的事情:若使用者正在執行某個程式,則這裡會顯示使用者執行程式的名字。如果使用者正在操作的是執行一般文字模式的命令,則這裡顯示的是使用者的環境名稱
- who:
程式碼如下:
[[email protected] ~]$ w
09:52:00 up 8:33, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
niesh :0 :0 四09 ?xdm? 3:52 0.33s gdm-session-worker [pam/gdm-password]
niesh pts/0 192.168.139.1 四09 19:30m 0.10s 0.10s -bash
niesh pts/1 192.168.139.1 四09 15:52m 0.24s 0.17s sshd: niesh [priv]
niesh pts/2 :0 四10 15:56m 0.09s 1.93s /usr/libexec/gnome-terminal-server
登入的歷史資訊
last:
顯示使用者登入的歷史資訊
原理即為讀取了/var/log/wtmp
lastlog:
讀取
/var/log/lastlog
, 同last
- last:
程式碼如下:
[[email protected] log]$ last
niesh pts/4 192.168.139.1 Fri Aug 25 09:40 still logged in
niesh pts/3 192.168.139.1 Fri Aug 25 09:40 still logged in
niesh pts/2 :0 Thu Aug 24 10:23 still logged in
niesh pts/1 192.168.139.1 Thu Aug 24 09:41 - 11:50 (1+02:08)
niesh pts/0 192.168.139.1 Thu Aug 24 09:41 - 11:32 (1+01:50)
niesh :0 :0 Thu Aug 24 09:40 still logged in
(unknown :0 :0 Thu Aug 24 09:39 - 09:40 (00:00)
reboot system boot 3.10.0-327.el7.x Thu Aug 24 09:39 - 14:05 (1+04:26)
niesh pts/0 192.168.139.1 Wed Aug 23 16:01 - crash (17:37)
niesh pts/2 192.168.139.1 Wed Aug 23 15:31 - crash (18:07)
niesh pts/1 :0 Wed Aug 23 15:30 - crash (18:09)
niesh :0 :0 Wed Aug 23 15:29 - crash (18:09)
niesh pts/0 192.168.139.1 Wed Aug 23 15:29 - 15:46 (00:17)
niesh pts/0 192.168.139.1 Tue Aug 22 18:05 - 18:21 (00:16)
niesh pts/3 192.168.139.1 Tue Aug 22 17:11 - 18:21 (01:09)
niesh pts/2 192.168.139.1 Tue Aug 22 17:06 - 18:21 (01:15)
niesh pts/1 192.168.139.1 Tue Aug 22 13:21 - 18:21 (05:00)
niesh pts/0 192.168.139.1 Tue Aug 22 13:21 - 17:24 (04:02)
(unknown :0 :0 Tue Aug 22 10:11 - 15:29 (1+05:18)
reboot system boot 3.10.0-327.el7.x Tue Aug 22 10:10 - 14:05 (3+03:54)
- lastlog:
程式碼如下:
[[email protected] log]$ lastlog
使用者名稱 埠 來自 最後登陸時間
root pts/2 四 8月 24 10:24:09 +0800 2017
bin **從未登入過**
daemon **從未登入過**
...
oprofile **從未登入過**
tcpdump **從未登入過**
niesh pts/4 192.168.139.1 五 8月 25 09:40:14 +0800 2017
3. 監控系統資源資訊
top:
類似windows的工作管理員,檢視系統程序、記憶體資源佔用、執行時間等等資訊
定時重新整理,佔用了大量的系統資源
引數:
- -d:指定更新的間隔(s)
- -q:沒有任何延遲的更新
- -c:顯示程序完整的路徑與名稱。
- -s:安全模式
- -i:不顯示任何Idle & Zombie程序
- -n:顯示更新的次數,完成後將會退出to
iostat:
監控系統裝置的IO負載情況
引數:
- -c: 只顯示CPU行
- -d: 顯示磁碟行
- -k: 以千位元組為單位顯示磁碟輸出
- -t: 在輸出中包括時間戳
- -x: 在輸出中包括擴充套件的磁碟指標
vmstat [delay][count]:
顯示程序、記憶體、IO等一些列資訊
- delay: 延時多少秒重新整理一次
- count: 顯示多少次
- top:
程式碼如下:
[[email protected] log]$ top -d 10 #為了便於複製,將舒心時間改為10s
top - 14:46:54 up 13:28, 4 users, load average: 0.00, 0.01, 0.05
Tasks: 436 total, 1 running, 435 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.3 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1517428 total, 401340 free, 645368 used, 470720 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 649748 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
63456 niesh 20 0 146420 2396 1444 R 0.3 0.2 0:00.05 top
1315 root 20 0 317868 6524 4980 S 0.2 0.4 1:13.06 vmtoolsd
3978 niesh 20 0 377436 18192 14384 S 0.2 1.2 1:14.92 vmtoolsd
43779 root 20 0 0 0 0 S 0.2 0.0 0:01.98 kworker/0:0
1373 root 20 0 203352 1244 788 S 0.1 0.1 0:00.13 gssproxy
1 root 20 0 191616 6796 3900 S 0.0 0.4 0:08.94 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.07 kthreadd
...
第一部分:
- 第一行: 系統時間 + 系統執行時間 + 幾個使用者 + 1/5/15分鐘系統平均負載
- 第二行:程序總數(total) + 正在執行程序數(running) + 睡眠程序數(sleeping) + 停止的程序數(stopped)+ 殭屍程序數(zombie)
- 第三行:使用者空間CPU佔比(us) + 核心空間CPU佔比(sy)+ CPU空置率(id)
第二部分:
- PID(Process IDentificator):程序標識
- USER:程序所有者的使用者名稱
- PR:程序的優先級別
- NI:程序的優先級別數值
- VIRT:程序佔用的虛擬記憶體值
- RES:程序佔用的實體記憶體值
- SHR:程序使用的共享記憶體值
- S:程序的狀態,其中S表示休眠,R表示正在執行,Z表示僵死狀態,N表示該程序優先值是負數
- %CPU:該程序佔用的CPU使用率
- %MEM:該程序佔用的實體記憶體和總記憶體的百分比
- TIME+:該程序啟動後佔用的總的CPU時間
- Command:程序啟動的啟動命令名稱,如果這一行顯示不下,程序會有一個完整的命令列
top
命令的互動:
- <空格>:立刻重新整理
- P:根據CPU使用大小進行排序
- T:根據時間、累計時間排序
- M:根據使用記憶體大小進行排序
- q:退出top命令
- m:切換顯示記憶體資訊
- t:切換顯示程序和CPU狀態資訊
- c:切換顯示命令名稱和完整命令列
- W:將當前設定寫入~/.toprc檔案中。這是寫top配置檔案的推薦方法
- iostat:
程式碼如下:
[[email protected] log]$ iostat -t
Linux 3.10.0-327.el7.x86_64 (niesh) 2017年08月25日 _x86_64_ (1 CPU)
2017年08月25日 15時05分15秒
avg-cpu: %user %nice %system %iowait %steal %idle
0.38 0.01 0.52 0.05 0.00 99.05
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.41 7.26 1.14 358126 56039
dm-0 0.42 7.11 1.09 350846 53990
dm-1 0.00 0.03 0.00 1268 0
- Device: 裝置名稱
- tps:每秒鐘的傳輸數
- kB_read/s:每秒鐘讀取資料塊(通常為512kB)的個數
- kB_write/s:每秒鐘寫入資料塊(通常為512kB)的個數
- kB_read:512位元組塊讀取總數量
- kB_wrtn:512位元組塊寫入總數量
- vmstat [delay][count]:
程式碼如下:
[[email protected] log]$ vmstat 3 4
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 401192 1260 469512 0 0 7 1 52 123 0 1 99 0 0
0 0 0 401192 1260 469512 0 0 0 0 57 104 0 0 100 0 0
0 0 0 401068 1260 469512 0 0 0 0 89 175 0 2 98 0 0
0 0 0 401068 1260 469512 0 0 0 0 56 93 0 0 100 0 0
以上各列解釋如下:
- r: Running, 正在執行和等待執行的程序數
- b: Sleeping,處於Sleeeping狀態的程序數
- swpd: 虛擬記憶體使用量,一般為0,否則可能是實體記憶體不夠用了
- free: 實體記憶體空閒大小
- buf: 緩衝區大小
- cache: 快取大小
- si: 每秒從虛擬記憶體寫入硬碟的大小
- so: 每秒從硬碟讀入到虛擬記憶體的大小
- bi: 塊裝置每秒接受的塊數量
- bo: 塊裝置每秒傳送的塊數量
- in: interrupt, 每秒中斷CPU的次數
- cs: context switch,每秒切換上下文的次數
- us: 使用者CPU時間,%
- sy: 系統CPU時間
- id: 空閒CPU時間
- wa: 等待IO的CPU時間
4. 檢視系統負載
uptime:
檢視系統負載狀況
引數:
- -p: pretty format
- -s: since yyyy-mm-dd HH:MM:SS format
程式碼如下:
[[email protected] log]$ uptime
15:42:50 up 14:24, 4 users, load average: 0.00, 0.01, 0.05
Linux中有一個通俗的說法:當load avarage <3 系統良好,大於5 可能有嚴重的效能問題
5. 程序
- rpm -qa:
檢視系統中所有安裝的軟體ps:
列出系統中執行的程序
引數:
由於 ps 能夠支援的系統型別相當的多,所以他的引數多的離譜!
而且有沒有加上 - 差很多!詳細的用法應該要參考 man ps!
- -A: 所有的程序均顯示出來,與 -e 具有同樣的效用
- -a: 顯示現行終端機下的所有程序,包括其他使用者的程序
- -u: 以使用者為主的程序狀態
- -l: 較長、較詳細的將該 PID 的的資訊列出
- -j: 工作的格式 (jobs format)
- -e: 同
-A
- -f: 做一個更為完整的輸出
kill [option][arugument]:
option
-u:指定使用者
-a:當處理當前程序時,不限制命令名和程序號的對應關係
-p:指定kill 命令只打印相關程序的程序號,而不傳送任何訊號
[0-n]: 0表重啟,9表強制關閉,15正常關閉(預設值)
argument: 程序的PID
- ps:
程式碼如下:
[[email protected] ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 191616 6796 ? Ss 01:18 0:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 2 0.0 0.0 0 0 ? S 01:18 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 01:18 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 01:18 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 01:18 0:00 [rcu_bh]
- USER:該程序屬於那個使用者賬號
- PID :該程序的程序ID號
- %CPU:該程序使用掉的 CPU 資源百分比
- %MEM:該程序所佔用的實體記憶體百分比
- VSZ :該程序使用掉的虛擬記憶體量 (Kbytes)
- RSS :該程序佔用的固定的記憶體量 (Kbytes)
- TTY :該程序是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程式,pts/n表示為由網路連線進主機的程式
STAT:該程式目前的狀態,主要的狀態有:
R :該程式目前正在運作,或者是可被運作
S :該程式目前正在睡眠當中但可被某些訊號(signal) 喚醒
T :該程式目前正在偵測或者是停止了
Z :該程式應該已經終止,但是其父程式卻無法正常的終止他,造成 zombie (疆屍) 程式的狀態- START:該程序被觸發啟動的時間;
- TIME :該程序實際使用 CPU 運作的時間。
COMMAND:該程式的實際指令為什麼?