1. 程式人生 > >Linux系統資源檢視 之 資源資訊

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:該程式的實際指令為什麼?