Linux平常運維(一)


10.1 監控系統的狀態


查看當前系統的負載:w uptime

w命令查看的是系統總體上的負載。linux

# w
 10:42:38 up 7 min,  1 user,  load average: 0.16, 0.08, 0.06
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.100.1    10:36    6.00s  0.04s  0.02s w


上面,ios

第1行從左到右顯示的信息依次爲:時間、系統運行時間、登陸用戶數、平均負載;
第2行顯示的是當前登陸的用戶及其登陸地址等。web

uptime命令也能夠顯示上面第1行的內容:shell

# uptime
 11:30:06 up 54 min,  1 user,  load average: 0.00, 0.01, 0.05


重點關注load average:數據庫

第1個數值表示1分鐘內系統的平均負載值(該值越大說明服務器壓力越大)
第2個數值表示5分鐘內系統的平均負載值
第3個數值表示15分鐘內系統的平均負載值vim

通常狀況下,第1個值不超過服務器的CPU數量就沒問題。緩存

查看服務器的CPU數量:bash

# cat /proc/cpuinfo


或者這樣查看:服務器

[root@localhost ~]# grep -c 'precessor' /proc/cpuinfo0


在linux中,服務器有2*n個CPU(n爲單顆物理CPU上有n核)。若是n是4,則查看/proc/cpuinfo這個文件會顯示8段相似信息,最後一段的processor後面會顯示爲7。網絡


監控系統的狀態:vmstat

vmstat命令顯示的結果分爲6部分:procs、memory、swap、io、system和cpu。

# vmstatprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1556704   2076 168336    0    0    12     1   20   16  0  0 100  0  0


procs——顯示進程的相關信息
r(run):表示運行或等待CPU時間片的進程數;
b(block):表示等待資源的進程數,資源指的是I/O、內存等。

memory——顯示內存的相關信息
swpd:表示切換到交換分區中的內存數量,單位爲KB,該值波動時說明內存不足;
free:表示當前空閒的內存數量,單位爲KB;
buff:表示(即將寫入磁盤的)緩衝大小,單位爲KB;
cache:表示(從磁盤讀取的)緩存大小,單位爲KB。

swap——顯示內存的交換狀況
si:表示由交換區寫入內存的數據量,單位爲KB;
so:表示由內存寫入交換區的數據量,單位爲KB。

io——顯示內存的交換狀況
bi:表示從塊設備讀取數據的量(磁盤→內存),單位爲KB;
bo:表示從塊設備寫入數據的量(內存→磁盤),單位爲KB。

system——顯示採集間隔內發生的中斷次數
in:表示在某一時間間隔內觀測到的每秒設備的中斷次數;
cd:表示每秒產生的上下文切換次數。

cpu——顯示CPU的使用狀態
us:表示用戶下所花費CPU的時間百分比(一般us<=10比較合適);
sy:表示系統花費CPU的時間百分比(sy與us呈正相關);
id:表示CPU處於空閒狀態的時間百分比;
wa:表示I/O等待所佔用CPU的時間百分比;
st:表示被偷走的CPU所佔的時間百分比(通常爲0)。

us + sy + id = 100%

重點關注r、b、si、so、bi、bo、us和wa這幾列信息。

vmstat n m表示動態輸出,每n秒輸出一次,共輸出m次。

# vmstat 1 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1556356   2076 168376    0    0     6     0   13   11  0  0 100  0  0
 0  0      0 1556356   2076 168376    0    0     0     0   84   61  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   81   70  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   62   55  0  0 100  0  0
 1  0      0 1556340   2076 168376    0    0     0     0   80   73  0  0 100  0  0


能夠看到,vmstat 1 5表示每1秒輸出一次,共輸出5次。

# vmstat 1procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1556340   2076 168376    0    0     6     0   13   11  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   85   69  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   68   60  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   60   54  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   77   68  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   67   61  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   69   62  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   73   61  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   67   62  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   73   68  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   67   60  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   60   53  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   69   62  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   68   61  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   72   63  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0    48   44   40  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   29   22  0  0 100  0  0
 0  0      0 1556340   2076 168376    0    0     0     0   41   29  0  0 100  0  0
^Z[1]+  已中止               vmstat 1


vmstat 1表示每1秒輸出一次,且一直輸出,除非按Ctrl+Z停止或Ctrl+C結束。


顯示進程所佔用的系統資源:top/htop

top命令用於動態監控進程所佔的系統資源,每3秒刷新一次,默認把佔用系統資源(CPU、內存、磁盤I/O等)最高的進程放在最上面。

top - 14:17:19 up  3:41,  1 user,  load average: 0.00, 0.02, 0.05
Tasks: 113 total,   2 running, 111 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1865308 total,  1370480 free,   139216 used,   355612 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1532752 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                          
  1811 root      20   0  161944   2200   1548 R   0.3  0.1   0:00.10 top                                              
     1 root      20   0  193492   6592   4128 S   0.0  0.4   0:01.99 systemd                                          
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd                                         
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.03 ksoftirqd/0                                      
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                     
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.61 kworker/u256:0                                   
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.37 migration/0                                      
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                           
     9 root      20   0       0      0      0 S   0.0  0.0   0:00.48 rcu_sched                                        
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                                    
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.08 watchdog/0                                       
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.08 watchdog/1                                       
    13 root      rt   0       0      0      0 S   0.0  0.0   0:00.31 migration/1                                      
    14 root      20   0       0      0      0 S   0.0  0.0   0:00.03 ksoftirqd/1                                      
    15 root      20   0       0      0      0 S   0.0  0.0   0:00.34 kworker/1:0                                      
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                     
    17 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 watchdog/2


上面左上角顯示CPU、內存、交換區的使用狀況,右邊顯示任務、負載、開機時間,下面就是進程實時情況。

top 查看進程使用資源狀況;
top -c 顯示詳細的進程信息;
top -bn1 靜態顯示全部進程。

# top -bn1 -c | head -15top - 14:24:49 up  3:49,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 114 total,   1 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  1.6 sy,  0.0 ni, 98.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1865308 total,  1369280 free,   140300 used,   355728 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1531624 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  1823 root      20   0  161868   2168   1600 R   6.2  0.1   0:00.01 top -bn1 -c
     1 root      20   0  193492   6592   4128 S   0.0  0.4   0:02.04 /usr/lib/systemd/systemd --switched-root --syste+
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 [kthreadd]
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.04 [ksoftirqd/0]
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.62 [kworker/u256:0]
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.37 [migration/0]
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]


  • 交互式命令:
q		退出top   
1 		顯示全部核CPU  
M 		按內存使用從高到低排序  
P 		按CPU使用從高到低排序


top只支持鍵盤操做,顯示單調,htop是Linux系統下一個基本文本模式的、交互式的進程查看器,主要用於控制檯或shell中,能夠替代top,是top的高級版本。

  • htop命令優勢:
1. 快速查看關鍵性能統計數據,如CPU(多核佈局)、內存/交換使用;
2. 能夠橫向或縱向滾動瀏覽進程列表,以查看全部的進程和完整的命令行;
3. 殺掉進程時能夠直接選擇而不須要輸入進程號;
4. 經過鼠標操做條目;
5. 比top啓動得更快。


  • 安裝htop:
# yum install -y htop


  • 下面是 F1~F10 的功能和對應的字母快捷鍵:
F1		查看htop使用說明   
F2		設置   
F3		搜索進程   
F4		過濾器,按關鍵字搜索   
F5		顯示樹形結構     
F6		選擇排序方式   
F7		減小nice值,這樣就能夠提升對應進程的優先級   
F8		增長nice值,這樣能夠下降對應進程的優先級   
F9		殺掉選中的進程   
F10		退出htop


  • 參數:
-C  --no-color					使用一個單色的配色方案   
-d  --delay=DELAY				設置延遲更新時間,單位秒   
-h  --help						顯示htop 命令幫助信息   
-u  --user=USERNAME				只顯示一個給定的用戶的過程   
-p  --pid=PID,[,PID,PID...]		只顯示給定的PIDs   
-s  --sort-key=COLUMN			依此列來排序   
-v  --version					顯示版本信息


  • 交互式命令:
上下鍵或PgUP/PgDn		選定想要的進程,左右鍵或Home, End   移動字段,固然也能夠直接用鼠標選定進程;   
Space					標記/取消標記一個進程。命令能夠做用於多個進程,例如   "kill",將應用於全部已標記的進程   
U						取消標記全部進程   
s						選擇某一進程,按s:用strace追蹤進程的系統調用   
l						顯示進程打開的文件: 若是安裝了lsof,按此鍵能夠顯示進程所打開的文件(小寫l)   
I						倒轉排序順序,若是排序是正序的,則反轉成倒序的,反之亦然(大寫i)   
+, -					在樹形模式下,展開或摺疊子樹  
a						(在有多處理器的機器上) 設置 CPU affinity:   標記一個進程容許使用哪些CPU   
u						顯示特定用戶進程   
M						按Memory 使用排序   
P						按CPU 使用排序   
T						按Time+ 使用排序   
F						跟蹤進程: 若是排序順序引發選定的進程在列表上處處移動,讓選定條跟隨該進程。這對監視一個進程很是有用:經過這種方式,你可讓一個進程在屏幕上一直可見。使用方向鍵會中止該功能。   
K						顯示/隱藏內核線程   
H						顯示/隱藏用戶線程   
Ctrl-L					刷新



監控系統狀態:sar

sar命令能夠監控平均負載、網卡流量、磁盤狀態、內存使用等系統狀態,能夠顯示歷史信息,能夠顯示當天從零時開始到當前時刻的系統狀態信息,每10分鐘記錄一次。

  • 安裝sar:
# yum install -y sysstat


初次使用sar會報錯,這是由於sar尚未生成相應的數據庫文件,它的數據庫文件保存在/var/log/sa目錄下。

# sarLinux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10時35分41秒       LINUX RESTART

10時40分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
10時50分01秒     all      0.00      0.00      0.01      0.00      0.00     99.99
11時00分01秒     all      0.00      0.00      0.01      0.00      0.00     99.99
11時10分01秒     all      0.00      0.00      0.03      0.05      0.00     99.92
11時20分01秒     all      0.00      0.00      0.01      0.00      0.00     99.98
11時30分01秒     all      0.00      0.00      0.01      0.00      0.00     99.99
11時40分01秒     all      0.00      0.00      0.01      0.01      0.00     99.98
11時50分01秒     all      0.00      0.00      0.01      0.00      0.00     99.99
12時00分01秒     all      0.00      0.00      0.01      0.00      0.00     99.99
12時10分01秒     all      0.00      0.00      0.01      0.00      0.00     99.98
12時20分01秒     all      0.00      0.00      0.02      0.00      0.00     99.98
12時30分01秒     all      0.00      0.00      0.02      0.00      0.00     99.98
12時40分01秒     all      0.00      0.00      0.02      0.00      0.00     99.98
12時50分01秒     all      0.00      0.00      0.01      0.00      0.00     99.98
13時00分01秒     all      0.00      0.00      0.02      0.00      0.00     99.98
13時10分01秒     all      0.00      0.00      0.02      0.00      0.00     99.98
13時20分01秒     all      0.00      0.00      0.02      0.00      0.00     99.98
13時30分01秒     all      0.00      0.00      0.02      0.00      0.00     99.98
13時40分01秒     all      0.01      0.00      0.02      0.00      0.00     99.97
13時50分01秒     all      0.00      0.00      0.02      0.00      0.00     99.98
14時00分01秒     all      0.01      0.00      0.02      0.00      0.00     99.97
14時10分01秒     all      0.00      0.00      0.01      0.00      0.00     99.98
14時20分01秒     all      0.10      0.00      0.22      0.28      0.00     99.41

14時20分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
14時30分01秒     all      0.00      0.00      0.01      0.01      0.00     99.98
14時40分01秒     all      0.01      0.00      0.04      0.00      0.00     99.94
14時50分01秒     all      0.01      0.00      0.06      0.00      0.00     99.93
平均時間:     all      0.01      0.00      0.03      0.01      0.00     99.95


  • 查看網卡流量:sar -n DEV
# sar -n DEV | head -15Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10時35分41秒       LINUX RESTART

10時40分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
10時50分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10時50分01秒     ens33      0.12      0.12      0.01      0.01      0.00      0.00      0.00
11時00分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11時00分01秒     ens33      0.09      0.11      0.01      0.01      0.00      0.00      0.00
11時10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11時10分01秒     ens33      0.38      0.26      0.03      0.03      0.00      0.00      0.00
11時20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11時20分01秒     ens33      0.15      0.12      0.01      0.01      0.00      0.00      0.00
11時30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11時30分01秒     ens33      0.06      0.07      0.00      0.00      0.00      0.00      0.00


上面,

IFACE		這一列表示設備名稱

rxpck/s		這一列表示每秒進入收取的包的數量

txpck/s		這一列表示每秒發送出去的包的數量

rxKB/s		這一列表示每秒收取的數據量(單位爲KB)

txKB/s		這一列表示每秒發送的數據量(單位爲KB)


# sar -n DEV -f /var/log/sa/sa09 | head -15Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10時35分41秒       LINUX RESTART

10時40分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
10時50分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10時50分01秒     ens33      0.12      0.12      0.01      0.01      0.00      0.00      0.00
11時00分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11時00分01秒     ens33      0.09      0.11      0.01      0.01      0.00      0.00      0.00
11時10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11時10分01秒     ens33      0.38      0.26      0.03      0.03      0.00      0.00      0.00
11時20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11時20分01秒     ens33      0.15      0.12      0.01      0.01      0.00      0.00      0.00
11時30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11時30分01秒     ens33      0.06      0.07      0.00      0.00      0.00      0.00      0.00


使用-f選項能夠查看某一天的網卡流量歷史,後面跟文件名(以sa開頭的文件,不能直接cat),sar的庫文件在/var/log/sa目錄下,還有sar開頭的文件,能夠直接cat。

  • 查看歷史負載:sar -q
# sar -q | head -15Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10時35分41秒       LINUX RESTART

10時40分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
10時50分01秒         0       130      0.00      0.02      0.05         0
11時00分01秒         0       129      0.00      0.01      0.05         0
11時10分01秒         0       131      0.01      0.02      0.05         0
11時20分01秒         0       130      0.00      0.01      0.05         0
11時30分01秒         0       129      0.00      0.01      0.05         0
11時40分01秒         0       130      0.00      0.01      0.05         0
11時50分01秒         0       130      0.00      0.01      0.05         0
12時00分01秒         0       129      0.00      0.01      0.05         0
12時10分01秒         0       131      0.00      0.01      0.05         0
12時20分01秒         0       131      0.00      0.01      0.05         0


  • 查看磁盤使用:sar -b
# sar -b | head -15Linux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)10時35分41秒       LINUX RESTART

10時40分01秒       tps      rtps      wtps   bread/s   bwrtn/s
10時50分01秒      0.05      0.00      0.05      0.12      0.54
11時00分01秒      0.06      0.02      0.04      0.59      0.57
11時10分01秒      0.88      0.48      0.40     14.22      9.21
11時20分01秒      0.04      0.00      0.03      0.11      0.36
11時30分01秒      0.05      0.00      0.05      0.00      0.47
11時40分01秒      0.05      0.00      0.05      0.04      0.70
11時50分01秒      0.06      0.00      0.06      0.00      0.70
12時00分01秒      0.02      0.00      0.02      0.00      0.29
12時10分01秒      0.07      0.00      0.07      0.00      0.84
12時20分01秒      0.04      0.00      0.04      0.00      0.40



查看網卡流量:nload

sar雖然能夠查看網卡流量,但不夠直觀,而nload很是直觀

  • 安裝nload:
# yum install -y epel-release;yum install -y nload


nload動態顯示,按向右箭頭能夠其它網卡的網絡流量。

輸出結果分爲兩個部分,Incoming 爲進入網卡的流量,Outgoing 爲網卡出去的流量,通常關注 Curr 那行數據,其單位也能夠動態自動調整。


監控I/O性能:iostat iotop

iostat -x和iotop均可以查看磁盤使用狀況。

  • iostat爲靜態顯示:
# iostat -xLinux 3.10.0-862.2.3.el7.x86_64 (localhost.localdomain) 	2018年06月09日 	_x86_64_	(4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.04    0.04    0.00   99.91

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.01    0.42    0.12    13.15     4.38    65.53     0.01   13.35   10.98   21.69   4.82   0.26
scd0              0.00     0.00    0.00    0.00     0.06     0.00   114.22     0.00   43.78   43.78    0.00  43.22   0.00


  • iotop相似於top,能夠動態顯示某個進程使用磁盤的情況:
Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND 
        1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 22
     2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
     3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
     5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
     6 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u256:0]
     7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
     8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_bh]
     9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]
    10 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [lru-add-drain]
    11 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    12 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/1]
    13 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
    14 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
    15 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0]
    16 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0H]



查看內存使用情況:free

free命令能夠查看當前系統的總內存大小以及使用內存的狀況。

# free
              total        used        free      shared  buff/cache   available
Mem:        1865308      139724     1369236        9692      356348     1532092
Swap:       4194300           0     4194300


上面,

total			內存總大小
used			真正使用的內存大小
free			剩餘物理內存大小
shared			共享內存大小
buff/cache		分配給buffer和cache的內存,即緩衝/緩存(數據通過CPU計算,即將寫入磁盤,用到的內存爲buffer;CPU要計算時,須要把數據從磁盤中讀出來,臨時放入內存中,用到的內存是cache)
available		系統可以使用的內存大小,包含free和buffer/cache剩餘部分

total = used + free + buff/cache


free命令能夠加-m和-g選項,分別以MB和GB爲單位顯示內存的使用情況,也支持-h選項。


查看系統進程:ps

ps命令專門查看系統進程。

  • ps不加參數時沒法顯示詳細的進程信息:
# ps
   PID TTY          TIME CMD
  1253 pts/0    00:00:00 bash
  1939 pts/0    00:00:00 ps


  • ps aux 顯示進程信息很是詳細(ps -elf與ps aux做用相似):
# ps aux | head -15USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 193492  6592 ?        Ss   10:35   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    10:35   0:00 [kthreadd]root          3  0.0  0.0      0     0 ?        S    10:35   0:00 [ksoftirqd/0]root          5  0.0  0.0      0     0 ?        S<   10:35   0:00 [kworker/0:0H]root          6  0.0  0.0      0     0 ?        S    10:35   0:00 [kworker/u256:0]root          7  0.0  0.0      0     0 ?        S    10:35   0:00 [migration/0]root          8  0.0  0.0      0     0 ?        S    10:35   0:00 [rcu_bh]root          9  0.0  0.0      0     0 ?        R    10:35   0:00 [rcu_sched]root         10  0.0  0.0      0     0 ?        S<   10:35   0:00 [lru-add-drain]root         11  0.0  0.0      0     0 ?        S    10:35   0:00 [watchdog/0]root         12  0.0  0.0      0     0 ?        S    10:35   0:00 [watchdog/1]root         13  0.0  0.0      0     0 ?        S    10:35   0:00 [migration/1]root         14  0.0  0.0      0     0 ?        S    10:35   0:00 [ksoftirqd/1]root         15  0.0  0.0      0     0 ?        S    10:35   0:00 [kworker/1:0]


上面,

PID 		表示進程的ID,kill使用時後面須要跟上PID
  
STAT 		進程的狀態,主要有如下幾種:
	D 		不能中斷進程(一般爲IO)
	R		正在運行中的進程
	S		已經中斷的進程
	Z		殭屍進程,殺不掉、打不死的進程(主進程意外丟失)
	<		高優先級進程
	N		低優先級進程
	s		主進程  
	l		多線程進程
	- \+ 	在前臺運行的進程


ps連同管道符一塊兒使用,能夠查看某個進程或它的數量(grep -c)。

# ps aux | grep sshdroot        923  0.0  0.2 112796  4296 ?        Ss   10:36   0:00 /usr/sbin/sshd -D
root       1249  0.0  0.2 158800  5540 ?        Ss   10:36   0:00 sshd: root@pts/0
root       1974  0.0  0.0 112724   984 pts/0    S+   16:02   0:00 grep --color=auto sshd



查看網絡情況:netstat

netstat命令用來查看網絡鏈接情況、系統所開放端口、路由表等信息。

  • 經常使用用法:netstat -lnp 、netstat -an
# netstat -lnp | head -15Active Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      923/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1152/master         
tcp6       0      0 :::22                   :::*                    LISTEN      923/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1152/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           571/chronyd         
udp6       0      0 ::1:323                 :::*                                571/chronyd         
raw6       0      0 :::58                   :::*                    7           595/NetworkManager  
Active UNIX domain sockets (only servers)Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     19801    1152/master          private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     19804    1152/master          private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     19807    1152/master          private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     19810    1152/master          private/defer


netstat -lnp查看當前系統啓動了哪些端口(netstat -ltnp查看tcp端口;netstat -lunp查看udp端口)。

  • netstat -an顯示網絡鏈接情況:
# netstat -an | head -20Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0     52 192.168.100.128:22      192.168.100.1:51990     ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp6       0      0 ::1:323                 :::*                               
raw6       0      0 :::58                   :::*                    7          
Active UNIX domain sockets (servers and established)Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     19801    private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     19804    private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     19807    private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     19810    private/defer
unix  2      [ ACC ]     STREAM     LISTENING     19852    private/discard
unix  2      [ ACC ]     STREAM     LISTENING     19858    private/virtual
unix  2      [ ACC ]     STREAM     LISTENING     17445    /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     19813    private/trace


netstat -an |awk '/^tcp/{+=sta[$NF]}END{for(key in sta) print key,"\t",sta[key]}'**查看tcp每一種狀態出現的數量。


10.2 抓包工具

當初步斷定服務器上有流量***時,使用抓包工具來抓取數據包能夠知道的IP。


tcpdump 工具:tcpdump -nn

  • 安裝tcpdump:
# yum install -y tcpdump


  • 參數:
-nn		做用是讓第3列和第4列顯示成「ip+端口號」的形式,不加-nn則顯示「主機名+服務名」

-i		指定設備名稱

-c		指定抓包數量,抓夠了自動退出

-w 		指定保存位置

-r 		讀取抓到的包內容

tcp 	指定抓tcp的包


# tcpdump -nn -i ens33  -c 10tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
16:29:43.007506 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1203060315:1203060527, ack 4165463380, win 251, length 212
16:29:43.008347 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 212:408, ack 1, win 251, length 196
16:29:43.008424 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 408:572, ack 1, win 251, length 164
16:29:43.008491 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 572:736, ack 1, win 251, length 164
16:29:43.008555 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 736:900, ack 1, win 251, length 164
16:29:43.008620 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 900:1064, ack 1, win 251, length 164
16:29:43.008684 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1064:1244, ack 1, win 251, length 180
16:29:43.008747 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1244:1424, ack 1, win 251, length 180
16:29:43.008823 IP 192.168.100.128.22 > 192.168.100.1.51990: Flags [P.], seq 1424:1604, ack 1, win 251, length 180
16:29:43.009124 IP 192.168.100.1.51990 > 192.168.100.128.22: Flags [.], ack 1604, win 2053, length 0
10 packets captured
11 packets received by filter
0 packets dropped by kernel



wireshark工具:tshark

  • 安裝tshark:
# yum install -y wireshark


  • web服務器抓包 :
# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"



10.3 Linux網絡相關


查看網卡IP:ifconfig ip addr

ifconfig命令相似於Windows的ipconfig命令,後面不跟任何選項和參數時,只顯示當前網卡IP的相關信息(如子網掩碼、網關等)。

  • 安裝ifconfig:
# yum install -y net-tools


  • ifconfig 查看網卡IP:
# ifconfigens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.128  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::b76:caa8:3d7c:71bc  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e4:fc:a5  txqueuelen 1000  (Ethernet)
        RX packets 12004  bytes 6150452 (5.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16570  bytes 4217661 (4.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 78  bytes 6856 (6.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 78  bytes 6856 (6.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


設置(修改)IP:vim /etc/sysconfig/network_scripts/ifcfg-ens33(這裏以ens33爲網卡名爲例)。

  • 關閉網卡:
# ifdown 網卡名


  • 啓動網卡:
# ifup 網卡名


  • 重啓網卡:
# ifdown 網卡名; ifup 網卡名(遠程時這樣沒法重啓,會斷開)或# ifdown 網卡名 && ifup 網卡名或# systemctl restart network



給一個網卡設定多個IP(虛擬網卡):vim ifcfg-ens:1

# cd /etc/sysconfig/network-scripts/# cp ifcfg-ens33 ifcfg-ens33:1# vim ifcfg-ens33:1TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:1
UUID=d71e4905-fa6f-4d09-8533-714dfb0b9e5d
DEVICE=ens33:1
ONBOOT=yes
IPADDR=192.168.100.130
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=8.8.8.8
DNS2=4.2.2.2


# systemctl restart network# ifconfigens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.128  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::b76:caa8:3d7c:71bc  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e4:fc:a5  txqueuelen 1000  (Ethernet)
        RX packets 12802  bytes 6219046 (5.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 17083  bytes 4281925 (4.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.130  netmask 255.255.255.0  broadcast 192.168.100.255
        ether 00:0c:29:e4:fc:a5  txqueuelen 1000  (Ethernet)lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 90  bytes 7912 (7.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 90  bytes 7912 (7.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



查看網卡鏈接狀態:mii-tool ethtool

  • mii-tool查看網卡是否鏈接:
# mii-tool ens33ens33: negotiated 1000baseT-FD flow-control, link ok


  • ethtool查看網卡狀態:
# ethtool ens33Settings for ens33:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes



更改主機名:hostname、hostnamectl set-hostname

  • 更改主機名:

hostname(重啓後失效);
hostnamectl set-hostname(重啓後不變)。


設置DNS:vim /etc/hosts

  • 設置DNS:

vi /etc/resolv.conf(臨時修改);
修改網卡配置文件(永久修改)。

  • vi /etc/hosts 臨時解析某個域名:
  1. 一個ip能夠對應多個域名,反之不行;
  2. 每一行只能有1個IP;
  3. 出現多個相同域名時,按最前面出現的記錄來解析。
相關文章
相關標籤/搜索