1. 程式人生 > >linux 系統運維小工具

linux 系統運維小工具

運維 操作數 idle nmap 定義 sta bec 發生 線程

一 CPU 性能監控工具

1 vmstat ,系統自帶

技術分享圖片
procs 列 :
r 列: 表示運行和等待CPU時間片的進程數,這個值如果長期大於系統CPU核數,說明CPU不足,需要增加CPU,其中的CPU指的是邏輯CPU
查看CPU總核數 :
技術分享圖片

b 列表示在等待的資源的進程數目

memory列:
swpd:是內存切換到交換分區的量(單位為k),如果swpd值不為0,或者較大,只要si so 長期為0,不會影響系統性能
free 表示當前空間的物理內存數量(單位為k)
buff 表示buff chache 的內存數量,一般對塊設備的讀寫才要緩沖
cache 表示page cached 的內存數量,一般作為文件系統的cached,頻繁訪問的文件都會被放入cached中,當物理內存過小或不夠使用時,其會釋放

swap列:
si : 每秒由交換分區寫入內存的大小
so :每秒由內存寫入交換分區的大小

如果內存足夠使用,則交換分區的寫入和寫出都為0,只有當這兩個值長期大於0,則表示系統內存不夠。

IO 列:
BI :表示從塊設備讀入數據的總量(即讀磁盤)(塊/s)
BO:表示寫入塊設置的數據總量(即寫磁盤)(塊/s)

system 列: 顯示采集間隔內發生的中斷數
in 列表示在某一時間間隔內觀察到每秒設備中斷數
cs 列表示每秒產生的上下文切換次數
如果這兩個值比較大,表示內核消耗CPU比較厲害

CPU列: 顯示了CPU的使用狀態
us: 用戶進程消耗CPU的時間百分比,如果長期大於50%,則需要優化程序算法

sy: 顯示了系統(內核)進程消耗CPU的時間百分比,如果大於80%,則說明可能CPU資源不足

id : 顯示了CPU 處於空閑時間的百分比

wa :顯示了IO 等待所占用的CPU時間百分比,如果長期高於20%,則有問題

可選參數及擴展:

參數選項 解釋說明
-a 顯示活躍和非活躍期內存
-f 顯示從系統啟動至今的fork 進程數量
-m 顯示slab信息
-n 只在開始時顯示一次個字段的名稱
-s 顯示內存相關統計信息及多種系統活動數量(重點)
-d 顯示磁盤相關統計信息
-p 顯示指定磁盤分區統計信息
-S 使用指定單位顯示,有k,K,m,M,分別代表1000,1024,1000000,1048576字節,默認單位為k(重點)
-t 統計信息帶上時間戳

範例 1
技術分享圖片
3 表示3秒間隔
5 表示顯示5次
inact 表示非活躍的內存大小
active 表示活躍的內存大小

範例2 顯示內存詳細信息
技術分享圖片

範例3 查看磁盤讀/寫
技術分享圖片

2 iostat 需要安裝

iostat 是I/O statistics(輸入/輸出)的縮寫,其主要功能是對系統磁盤I/O操作進行監視,它的主要是顯示磁盤讀寫操作的統計信息,同時也會給出CPU的使用情況。
技術分享圖片

語法格式
iostat [選項] [ 時間間隔 [次數]]

參數選項 解釋說明
-c 顯示CPU的使用情況
-d 顯示磁盤的使用情況
-k 每秒以kB為單位顯示數據
-m 每秒以MB 單位顯示數據
-n 顯示NFS 的使用情況
-t 顯示每次統計執行的時間
-p device 指定要統計的磁盤設備名稱,默認為所有磁盤
-x 顯示擴展統計

技術分享圖片
%user :用戶進程消耗CPU時間百分比
%nice:改變優先級的進程占用CPU時間百分比
%system: 系統內核進程消耗的CPU時間百分比
%iowait:IO等待所占中的CPU時間百分比
%steal:虛擬機強制CPU等待時間百分比
%idle: CPU空閑狀態的時間百分比

技術分享圖片

tps:表示該設備每秒傳輸次數,一次傳輸的意思是一次I/O請求,多個邏輯請求可能會被合並成一次I/O請求

Blk_read/s:表示每秒讀取的數據塊數
Blk_wrtn/s:表示每秒寫入的數據塊數
Blk_read: 表示讀取的所有塊數
Blk_wrtn: 表示寫入的所有塊數

只顯示磁盤信息
技術分享圖片

技術分享圖片

rrqm/s:每秒進行merge 的讀操作的數目
wrqm/s:每秒進行merge 的寫操作數據
r/s : 每秒完成的讀I/O 設備次數
w/s:每秒完成的寫I/O設備的次數
rKB/s:每秒讀入的千字節數
wKB/s: 每秒寫入的千字節數
avgrq-sz: 設備平均每次進行I/O操作的數據大小(扇區)
avgqu-sz:平均I/O隊列長度
await:設備平均每次I/O操作的等待時間
svctm: 設備平均每次I/O操作的等待時間
%util:每秒中用於I/O操作的百分比

3 uptime 命令

uptime (選項)

-V 顯示指令的版本信息

實例
技術分享圖片
技術分享圖片

內容說明:
15:07:32 系統的當前時間
up 14min ,表示系統已經運行的時間
1 user 表示用戶的鏈接數,是總鏈接數
load average 表示系統平均負載,統計最近1,5,15 分鐘平均負載
系統的平均負載是指在特定時間內運行隊列的平均進程數。

如果每個CPU內核的當前活動進程數不大於3.表示系統性能是良好的,如果大於5,則說明性能嚴重有問題

sar 收集系統信息

通過sar 命令,可以全面的獲取CPU,運行隊列,磁盤I/O、分頁(交換區)、內存、CPU中斷和網絡等性能數據

語法格式
sar [選項] [時間間隔 [次數]]

說明:
在sar 命令及後面的選項中,每個元素之間至少要有一個空格

參數說明

參數選項 解釋說明
-A 顯示系統所有資源設備的運行情況
-u 顯示系統所有CPU在采樣時間內的負載狀態
-P 顯示當前系統中指定CPU的使用情況
-d 顯示所有硬盤設備在采樣時間內的使用情況
-r 顯示在采樣時間內系統內存的使用情況
-b 顯示在采樣時間內緩沖區的使用情況
-v 顯示索引節點、文件和其他內核表的狀態
-n 顯示網絡運行狀態
-q 顯示運行隊列的大小,它與系統當前的平均負載相同
-R 顯示進程在采樣時間內的活動情況
-w 顯示系統交換活動在采樣時間內的狀態

安裝軟件包
技術分享圖片
查看CPU相關信息:
技術分享圖片
kbmemfree : 空閑物理內存量
kbmemused: 使用中的物理內存量
%memused: 物理內存的使用率
kbbuffers: 內存中作為緩沖區使用的物理內存容量
kubcached:內核中作為緩存使用的物理內存容量
%xommit:應用程序當前的內存大小占大小的使用百分比

顯示緩沖區的使用情況:
技術分享圖片
tps: 每秒物理設備的I/O傳輸總量
rtps:每秒從物理設備讀入的數據總量
wtps:每秒向物理設備寫入的數據總量
bread/s:每秒從物理設備讀入的數據量,單位為塊/s。
bwrtn/s:每秒向物理設備寫入的數據量,單位同上

顯示網絡的運行狀態

技術分享圖片
IFACE:網絡接口
rxpck/s:每秒中接受的數據包
txpck/s:每秒中發送的數據包
rxkB/s: 每秒鐘接受的字節數
txkB/s:秒鐘發送的字節數
rxcmp/s:每秒中接受的壓縮數據包
txcmp/s:秒鐘發送的壓縮數據包
rxmcst/s:每秒中接受的多播數據包

顯示網絡錯誤的統計數據
技術分享圖片

IFACE:網絡接口
rxerr/s: 每秒中接受的壞數據包
txerr/s:每秒鐘發生的壞數據包
coll/s:每秒的沖突數
rxdrop/s: 因為緩沖充滿,每秒鐘丟棄的已經接收的數據包數
txdrop/s:因為緩沖充滿。每秒中丟棄已經發送的數據包數
txcarr/s: 發送數據包時,每秒載波錯誤數
rxfram/s:每秒接受數據包的幀對其錯誤數
rxfifo/s: 接受的數據包每秒FIFO過速的錯誤數
txfifo/s: 發送的數據包每秒FIFO過速的錯誤數。

顯示套接字信息
技術分享圖片
totsck:使用套接字總數量
tcpsck: 使用TCP套接字數量
udpsck:使用UDP套接字數量
rawsck:使用raw 套接字數量
ip-frag:使用IP段數量
tcp-tw:處於TIME_WAIT狀態的TCP套接字數量

查看系統磁盤讀寫性能
技術分享圖片

DEV: 表示磁盤設備名稱
tps: 表示該設備每秒的傳輸次數
rd_sec/s: 表示每秒從設備讀取的扇區數
wr_sec/s:表示每秒寫入設備的扇區數目
avgrq-sz:設備平均每次I/O操作的數據大小(扇區)
avgqu-sz:平均I/O隊列長度
await:設備平均每次I/O操作的等待時間(毫秒)
svctm:設備平均每次I/O操作的服務時間(毫秒)
%util: 每秒用於I/O操作的百分比

二 網絡管理命令

1 tcpdump

tcpdump 命令是一個截獲網絡數據包的包分析工具,tcpdump可以將網絡中傳送的數據包的[頭]完全截獲下來分析,它支持針對網絡層,協議,主機,端口等的過濾,並支持與、或、非邏輯語句協助過濾有效信息

tcpdump命令工作是要先把網卡的工作模式切換到混雜模式,因為要修改網絡接口的工作模式,因此tcpdump命令需要以root的身份運行

tcpdump [選項] [表達式]

參數說明

參數選項 解釋說明
-A 以ASCII 碼方式顯示每一個數據包,在抓取數據包時,可方面查看數據
-c <數據包數目> 接受指定的數據包數目後退出命令
-e 每行的打印輸出中將包含數據包的數據鏈路層頭部信息
-i <網絡接口> 指定要監聽數據包的網絡接口
-n 不進行DNS解析,加快顯示速度
-nn 不將協議和端口數字等轉換成名字
-q 以快速的方式運行,此選項僅顯示數據包的協議概要信息,輸出信息較短
-s <數據包大小> 設置數據包抓取長度,如果不設置則默認為68字節,設置為0則自動選擇合適的長度來抓取數據包
-t 在每行輸出信息中不顯示時間戳標記
-tt 顯示當前行與前一行的延遲
-tttt 在每行打印的時間戳之前添加日期
-v 顯示命令執行的詳細信息
-vv 顯示比-v 選項更加詳細的信息
-vvvv 顯示更加相信的輸出

1 安裝TCPDUMP
技術分享圖片

實例 :
技術分享圖片
-i 指定監聽的端口
-c 指定監聽數據包的數量
16:52:50 當前時間,精確到微秒
IP 192.168.3.21.54680 > server6.ssh:從具體數據包的信息和>表示流向
flags[.] :TCP 包中的標誌信息,S是SYN標誌的縮寫,F(fIN),P(PUSH),R(RST),[.] 沒有標記
seq: 數據包中的數據的順序號
ack:下次期望的順序號
win: 接受緩存的窗口大小
length:數據包長度

監聽固定的IP地址
技術分享圖片
監聽固定的端口號
技術分享圖片

監聽指定協議的數據包
技術分享圖片
常見協議:IP,arp、icmp、tcp、udp 等

2 nmap

網絡探測工具/端口掃描器
nmap 命令是一款開放源代碼的網絡探測和安全審核工具,是network mapper 的縮寫,器設計目標i是快速地掃描大型網絡,nmap 可以發現網絡上有那些主機,主機提供了什麽服務,並探測操作系統的類型及版本信息

軟件安裝
技術分享圖片
nmap [掃描類型] [通用選項] {掃描目標}

掃描目標可以為IP地址或子網地址等

參數說明

參數選項 解釋說明
-sS TCP 同步掃描TCP SYN)
-sT TCP鏈接掃描
-sn 不進行端口掃描,只檢查主機正在運行,該選項與老板不的-sP相同
-sU 掃描UDP端口
-sV 探測服務器版本信息
-Pn 只進行掃描,不ping主機
-PS 使用SYN包對目標主機進行掃描,默認是80端口,也可以指定端口,格式為-PS22或-PS22-25,80,53等,PS和端口號之間沒有空格
-PU 使用UDP ping 掃描端口
-O 激活對TCP/IP指紋特征的掃描,獲得遠程主機的標誌,也就是操作系統類型
-v 顯示掃描過程的詳細信息
-S <ip> 設置掃描的源IP地址
-g port 設置掃描的源端口
-oN 把掃描的結果重定向到文件中
-iL filename 從文件中讀取掃描的目標
-p<端口> 指定要掃描的端口,可以是一個單獨的端口,也可以是用逗號分隔開的多個端口,或者使用"_"表示端口範圍
-n 不進行DNS解析,加快掃描速度
--exclude 排除指定主機
--excludefile 排除指定文件中的主機

查看主機當前開放的端口
技術分享圖片
掃描主機的特定端口
技術分享圖片

掃描一個網段
技術分享圖片

3 ping

ping 命令可用於測試主機之間網絡的連同性,執行ping 命令會使用ICMP傳輸協議,發送要求回應的消息,若遠端網絡功能沒有問題,就會回應該信息,

ping [選項] [目標主機]

參數選項 解釋說明
-c <次數> 指定發送ICMP報文的次數,否則將一直發送
-i <時間間隔> 相鄰兩次發送報文的時間間隔,默認時間間隔是1s
-n 不查詢主機名,直接顯示IP地址
-q 只顯示命令開始時的信息和運行結束時的統計信息,忽略命令運行過程中出現的信息
-s<數據包大小> 設置發送數據包的大小,默認大小為56字節,再加上8字節ICMP頭部,一共是64字節ICMP包
-t <生存期> 設置發送的數據包其生存期(TLL)的值
-w 截止時間 超過截止時間,立即退出ping程序
-W 超時時間 等待相應的超時時間

技術分享圖片

-c 3:發送3次ICMP包
-i 3:每次發包的時間間隔為3s
-s 1024: 設置發送的數據包大小為1024字節
-t 220,設置發送數據包的ttl值為220

三 Linux 進程管理命令

1 top

top 命令用於實時地對系統處理器狀態進行監控,它能夠實時的顯示系統中各個進程的資源占用情況,該命令可以按照CPU的使用,內存的使用和執行時間對系統的任務進行排序顯示,同時top 命令還可以通過交互式命令進行設定顯示

top [選項]

後跟命令

參數選項 解釋說明
-b 以批處理的模式顯示進程信息,輸出結果可以傳輸給其他程序或寫入到文件中,這種模式下,top命令不會接受任何輸入,一站式運行到直到達到-n選項設置的閾值,或ctrl+C終止
-c 顯示進程的整個命令路徑,而不是只顯示命令名稱
-d 指定每兩次屏幕信息刷新之間的時間間隔
-H 指定這個可以顯示每個線程的情況,否則就是進程的總情況
-i 不顯示閑置或僵屍的進程信息
-n top 輸出信息的更新次數
-p 顯示指定的進程信息

交互式命令
交互式命令就是在top命令執行過程中使用的一些命令:

交互式命令 含義
h 或 ? 顯示幫助信息,給出交互式命令的一些說明總結
Z 全局顏色設置
B 全局字體加粗設置
l(小寫L) 切換是否顯示平均負載和啟動時間信息
t 切換是否顯示進程和CPU狀態信息
m 切換是否顯示內存信息
1(數字1) 用於多核CPU監控,可監控每個邏輯CPU的運行狀況
I Irix/sokaris 模式
f 從當前顯示列表中添加或刪除項目,按"f"鍵之後會顯示列的列表,按"a-z"鍵即可顯示或隱藏對應的列,最後按回車鍵確定
o 該表top 輸出信息中顯示項目的順序,按大小寫的a-z 鍵可以將相應的列向右移動,而按大寫的A-Z鍵可以將相應的列向左移動,最後按回車鍵確定
F或O 選擇排序的列
<,> 移動選擇排序的列。‘<‘ 選擇左臨一列排序,‘>‘選擇右臨一列排序
R 切換正常/反轉順序
H 切換是否顯示線程信息
c 切換是夠顯示完整命令行和命令名稱信息
i 切換是夠顯示閑置進程和僵屍進程
S 切換到累計模式
x 以高亮的形式排序對應列,需要結合b/z 使用
y 高亮運行的進程,需要結合b/z 使用
z 打開/關閉顏色
b 打開/關閉加粗
u 顯示指定用戶相關的進程信息
n或# 設置顯示進程的最大行數
k 終止一個進程,系統將提示用戶輸入一個需要終止進程的PID
r 重新設置一個進程的優先級,系統提示用戶輸入需要該變的進程PID,以及需要設置的優先級值,輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先級,默認值是10
d或s 改變top輸出信息兩次刷新的時間,系統將提示輸入新的時間,單位為s,如果是小數,則換算成ms,如果是0,則系統不停刷新,默認刷新時間是3s,如果設置太小,則可能會造成系統負載過大
W 將當前top 設置寫入"~/.toprc"文件中
q 退出top顯示

顯示說明
技術分享圖片
第一行:任務隊列信息,同uptime命令執行結果
第二行:tasks為任務(進程),系統現有進程115個,處於運行狀態的1個,正在休眠的114個,stoped狀態0個,zombie(僵屍)的0個
第三行:CPU狀態信息
us 用戶占用CPU比例
sy 內核占用cpu比例
ni 改變過優先級的進程占用CPU的百分比
id 空閑CPU的百分比
wa I/O等待占用CPU的百分比
ni 硬中斷(hardware IRQ)占用CPU的百分比
si 軟中斷software interrupt)占用CPU的百分比
st 虛擬機占用CPU的百分比

第四行:內存狀態
total 物理內存總量
used 使用中的內存總量
free 空閑內存總量
buffers 緩沖的內存總量

第五行:swap 交換分區信息
total 交換分區總量
used 使用的交換分區量
free 空閑的交換分區量
cached 緩存的內存量

第六行: 空行

第七行:各進程的狀態監控
PID : 進程ID
USER: 進程所有者
PR:進程優先級
NI :nice 值,負值表示高優先級,正值表示低優先級
VIRT: 進程使用的虛擬內存總量。單位為kb
RES: 進程使用的、未被換出的物理內存發小,單位為kb
SHR:共享內存大小,單位為kb
S: 進程狀態,D= 不可中斷的睡眠狀態、 R= 運行、 S=睡眠 、T =跟蹤/停止 、 Z=僵屍進程
%CPU 上次更新到現在的CPU時間占用百分比
%MEM 進程使用的物理內存百分比
TIME+ 進程使用的CPU時間總計,單位為1/100秒
COMMAND 進程名稱(命令名/命令行)

2 ps

ps命令用於列出執行ps命令時刻的進程快照,要想動態信息,就需要使用top命令

ps [選項]

參數選項 解釋說明
-a 顯示所有終端下執行的進程
a 顯示與終端相關的所有進程,包含每個進程的完整路徑
x 顯示與終端無關的所有進程
u 顯示進程的用戶信息
-u 顯示指定用戶相關的進程信息
-e 顯示所有進程
-f 額外顯示UID,PID,C與STIME 的欄位
f 顯示進程樹
-H 顯示進程樹
-I 以詳細的格式來顯示進程的狀態
-o 自定義輸出指定的字段,以逗號分隔
--sort key key表示為指定字段排序,默認為升序,+key為升序,-key 為降序

技術分享圖片
PID 是進程的標識號
TTY 是進程所屬的終端控制臺
TIME 列是進程所使用的總的CPU時間
CMD 列是正在執行的命令行

技術分享圖片

UID:進程擁有者
PID:進程標識號
PPID: 進程父進程標識號
C: CPU 使用資源百分比
STIME:進程開始時間
TTY: 該進程是在哪個終端機上面運行,若與終端機無關,則顯示[?],另外,tty1-tty6是本機面的登錄者進程,若為pts/0,則表示有網絡連接進主機的進程
TIME: 進程所使用的總的CPU時間
CMD:正在執行的命令行
常用組合命令
技術分享圖片

USER :該進程所屬的用戶
PID: 進程的進程號
%CPU:該進程使用掉的CPU百分比
%MEM:該進程所占用的物理內存的百分比
VSZ: 該進程使用掉的虛擬內存量(單位kbytes)
RSS: 該進程占用的固定的內存量(單位為kbytes)
TTY: 該進程是在哪個終端機上運行
STAT: 該進程目前狀態
R: 正在運行
S: 正在睡眠或者可以運行
D: 不可中斷睡眠
T: 正在偵測或者是停止了
Z :已經終止,但是其父進程無法正常終止他,從而編程僵屍進程
+: 前臺進程
I: 多線程進程
N:低優先級進程
‘<‘:高優先級進程
s: 進程領導者
L:已將頁面鎖定到內存中

START:該進程被觸發啟動的時間
TIME:該進程實際使用的CPU運作的時間
COMMAND: 該進程的實際命令

以詳細格式顯示進程狀態
技術分享圖片
參數詳解:
F:代表這個進程的標誌,4 代表使用者為super user。
S:代表這個進程的狀態為stat
C:代表CPU使用率百分比
PRI: 優先級
NI:nice值
ADDR:指出該進程在內存的那個部分,如果是個running,則一般是[-]
SZ: 使用掉的內存大小
WCHAN: 目前這個進程是否正在運行中,若是則為[-]

3 kill 和killall

終止進程
kill [選項] [進程號]

參數選項 解釋說明
-l 列出全部信號名稱
-p 指定kill 命令只打印相關的進程號,而不發送任何信號
-s 指定要發送的信號

技術分享圖片
可以使用-l(小寫L)進行參數信號和數字信號之間的轉換
技術分享圖片

常用信號說明

信號 說明
HUP(1) 掛起,通常因終端掉線或用戶退出而引發的
INT(2) 中斷,通常是按下CTRl+c組合鍵來發出這個信號
QUIT(3) 退出,通常是按下CRTL+\組合鍵發出此信息號
kill(9) 立即結束進程的運行
TERM(15) 終止,通常在系統關機時發送
TSTP(20) 暫停進程運行,通常是按下CTRL+Z組合鍵發出這個信號

kill 默認使用的信號為15,用於結束進程,如果進程忽略此信號,可以使用信號9強制終止進程

在kill中有一個特殊信號值為0,其中-0 表示不發送任何信號,但仍然會對對應的進程進行檢查,如果$pid對應的進程已經存在,則返回0,否則返回1

killall 通過進程名終止進程

killall [選項] [進程名]

參數選項 解釋說明
-e 對於很長的名字,要求能夠準確匹配,默認,如果一個進程名的長度超過了15個字符,則無法使用整個名字了,這種情況下,killall會終止所有匹配名字前15個字符的所有進程,而-e參數的作用是模糊匹配,如果同時指定了-v選項,則killall會針對每個忽略的記錄打印一條消息
-I 不區分大小寫匹配
-g 終止屬於該進程組的進程
-i 在終止進程之前詢問是否確認
-q 如果沒有進程終止則不提示
-r 使用正則表達式匹配要終止的進程名稱
-s 用指定的信號代替默認信號
-u 終止指定用戶的進程
-v 報告信號是否發送成功
-w 等待所有被終止的進程死去,killall 每秒會檢查一次被終止的進程是否仍然存在,其僅在都死光後才返回。

linux 系統運維小工具