如果你想知道你的服務(wù)器正在做干什么,你就需要了解一些基本的命令,一旦你精通了這些命令,那你就是一個(gè) 專(zhuān)業(yè)的 Linux 系統(tǒng)管理員
iostat
ostat主要用于監(jiān)控系統(tǒng)設(shè)備的IO負(fù)載情況,iostat首次運(yùn)行時(shí)顯示自系統(tǒng)啟動(dòng)開(kāi)始的各項(xiàng)統(tǒng)計(jì)信息,之后運(yùn)行iostat將顯示自上次運(yùn)行該命令以后的統(tǒng)計(jì)信息。用戶(hù)可以通過(guò)指定統(tǒng)計(jì)的次數(shù)和時(shí)間來(lái)獲得所需的統(tǒng)計(jì)信息。
語(yǔ)法:iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]
一般常用:-x 參數(shù):該選項(xiàng)將用于顯示和io相關(guān)的擴(kuò)展數(shù)據(jù)
-c 參數(shù):用來(lái)獲取cpu部分狀態(tài)值
iostat -d -k 1 10 #查看TPS和吞吐量信息(磁盤(pán)讀寫(xiě)速度單位為KB)
iostat -d -m 2 #查看TPS和吞吐量信息(磁盤(pán)讀寫(xiě)速度單位為MB)
iostat -d -x -k 1 10 #查看設(shè)備使用率(%util)、響應(yīng)時(shí)間(await) iostat -c 1 10 #查看cpu狀態(tài)
iostat -c 1 10 #獲取cpu部分狀態(tài)值
meminfo
使用 cat 和 grep 命令來(lái)顯示 meminfo 信息
cat /proc/meminfo
free
使用動(dòng)態(tài)顯示內(nèi)存的使用信息
free
mpstat
查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息
mpstat
netstat
netstat 是一個(gè)告訴我們系統(tǒng)中所有 tcp/udp/unix socket 連接狀態(tài)的命令行工具
netstat -a #使用a 選項(xiàng)可以列出系統(tǒng)中的所有連接
netstat -at #使用 t選項(xiàng)只列出 tcp 連接
netstat -au #類(lèi)似的,使用u 選項(xiàng)只列出udp 連接
netstat -ax #使用 x 選項(xiàng)只列出 Unix socket 連接
netstat -ap #使用 p選項(xiàng)可以在列出連接的同時(shí)也顯示 PID 或者進(jìn)程名稱(chēng),而且它還能與其他選項(xiàng)連用
netstat -an #使用 n 選項(xiàng)可以加快輸出,它不會(huì)執(zhí)行任何反向查詢(xún)(LCTT 譯注:這里原文有誤),而是直接輸出數(shù)字。由于無(wú)需查詢(xún),因此結(jié)果輸出會(huì)快很多
netstat -l #使用l 選項(xiàng)只輸出監(jiān)聽(tīng)端口。它不能與 a 選項(xiàng)連用,因?yàn)?a 會(huì)輸出所有端口,
netstat -s #使用 s 選項(xiàng)輸出每個(gè)協(xié)議的統(tǒng)計(jì)信息,包括接收/發(fā)送的包數(shù)量
netstat -i #使用 I 選項(xiàng)只顯示網(wǎng)卡的統(tǒng)計(jì)信息
netstat -g #使用g 選項(xiàng)輸出 IPV4以及IPV6 的多播組信息
netstat -r #使用 r 輸出網(wǎng)絡(luò)路由信息
netstat -c #使用 c 選項(xiàng)持續(xù)輸出結(jié)果
netstat -anp | grep 3306 #與grep 連用來(lái)過(guò)濾出某個(gè)端口的連接
netstat -anp | grep 3306 | wc -l #通過(guò)與wc 和 grep 命令連用,可以統(tǒng)計(jì)指定端口的連接數(shù)量
nmon
Nmon 可以很輕松的監(jiān)控系統(tǒng)的 CPU、內(nèi)存、網(wǎng)絡(luò)、硬盤(pán)、文件系統(tǒng)、NFS、高耗進(jìn)程、資源和 IBM Power 系統(tǒng)的微分區(qū)的信息
要運(yùn)行 nmon,你可以在命令行中啟動(dòng)它,然后選擇要監(jiān)控的子系統(tǒng),這些子系統(tǒng)都對(duì)應(yīng)有一個(gè)快捷鍵,例如輸入 c 可查看 CPU 信息,m用于查看內(nèi)存,d用來(lái)查看磁盤(pán)信息等,你也可以使用 -f 命令將 nmon 的執(zhí)行結(jié)果保存到一個(gè) CSV 文件中,便于日后分析
pmap
pmap 命令用來(lái)報(bào)告每個(gè)進(jìn)程占用內(nèi)存的詳細(xì)情況,可用來(lái)看是否有進(jìn)程超支了,該命令需要進(jìn)程 id 作為參數(shù)
用法
pmap [ -x | -d ] [ -q ] pids...
pmap -V
選項(xiàng)含義
-x extended Show the extended format. 顯示擴(kuò)展格式
-d device Show the deviceformat. 顯示設(shè)備格式
-q quiet Do not display some header/footerlines. 不顯示頭尾行
-V show version Displays version of program. 顯示版本
pmap -d 1
ps
ps 告訴你每個(gè)進(jìn)程占用的內(nèi)存和 CPU 處理時(shí)間
命令參數(shù):a 顯示所有進(jìn)程
-a 顯示同一終端下的所有程序
-A 顯示所有進(jìn)程
c 顯示進(jìn)程的真實(shí)名稱(chēng)
-N 反向選擇
-e 等于“-A”
e 顯示環(huán)境變量
f 顯示程序間的關(guān)系
-H 顯示樹(shù)狀結(jié)構(gòu)
r 顯示當(dāng)前終端的進(jìn)程
T 顯示當(dāng)前終端的所有程序
u 指定用戶(hù)的所有進(jìn)程
-au 顯示較詳細(xì)的資訊
-aux 顯示所有包含其他使用者的行程
-C<命令> 列出指定命令的狀況
--lines<行數(shù)> 每頁(yè)顯示的行數(shù)
--width<字符數(shù)> 每頁(yè)顯示的字符數(shù)
--help 顯示幫助信息
--version 顯示版本顯示
pstree
pstree 顯示的信息沒(méi)那么詳細(xì),但它以樹(shù)形結(jié)構(gòu)顯示進(jìn)程之間的依賴(lài)關(guān)系,包括子進(jìn)程信息。一旦發(fā)現(xiàn)某個(gè)進(jìn)程有問(wèn)題,你可以使用 kill 來(lái)殺掉它
sar
sar 程序是系統(tǒng)監(jiān)控工具里的瑞士軍刀。該程序包含三個(gè)工具:sar 用來(lái)顯示數(shù)據(jù),sa1 和 sa2 用來(lái)收集數(shù)據(jù)并保存。sar 可用來(lái)顯示 CPU 使用率、內(nèi)存頁(yè)數(shù)據(jù)、網(wǎng)絡(luò) I/O 和傳輸統(tǒng)計(jì)、進(jìn)程創(chuàng)建活動(dòng)和磁盤(pán)設(shè)備的活動(dòng)詳情。sar 和 nmon 最大的不同就是 sar 適合用作長(zhǎng)期的監(jiān)控,而 nmon 可以讓你快速的了解系統(tǒng)當(dāng)前狀態(tài)
strace
strace 經(jīng)常被認(rèn)為是程序員調(diào)試的工具,但不止如此。它可以記錄進(jìn)程進(jìn)行系統(tǒng)調(diào)用的詳情,因此它也是一個(gè)非常好的診斷工具,例如你可以使用它來(lái)找出某個(gè)程序正在打開(kāi)某個(gè)配置文件
strace的最簡(jiǎn)單的用法就是執(zhí)行一個(gè)指定的命令,在指定的命令結(jié)束之后它也就退出了。在命令執(zhí)行的過(guò)程中,strace會(huì)記錄和解析命令進(jìn)程的所有系統(tǒng)調(diào)用以及這個(gè)進(jìn)程所接收到的所有的信號(hào)值。
Strace 也有一個(gè)缺陷,但它在跟蹤某個(gè)進(jìn)程時(shí)會(huì)讓該進(jìn)程的性能變得非常差,因此請(qǐng)謹(jǐn)慎使用
tcpdump
根據(jù)使用者的定義對(duì)網(wǎng)絡(luò)上的數(shù)據(jù)包進(jìn)行截獲的包分析工具
tcpdump可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的“頭”完全截獲下來(lái)提供分析。它支持針對(duì)網(wǎng)絡(luò)層、協(xié)議、主機(jī)、網(wǎng)絡(luò)或端口的過(guò)濾,并提供and、or、not等邏輯語(yǔ)句來(lái)幫助你去掉無(wú)用的信息。
可以指定主機(jī),端口或者用戶(hù)發(fā)送的數(shù)據(jù)包
tcpdump tcp port 23 and host 210.27.48.1
tcpdump -i eth0 dst host hostname
tcpdump host sundown
top
top命令是Linux下常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類(lèi)似于Windows的任務(wù)管理器
使用格式:top [-] [d] [p] [q] [c] [C] [S] [s] [n]
參數(shù)說(shuō)明:d:指定每?jī)纱纹聊恍畔⑺⑿轮g的時(shí)間間隔。
當(dāng)然用戶(hù)可以使用s交互命令來(lái)改變之。
p:通過(guò)指定監(jiān)控進(jìn)程ID來(lái)僅僅監(jiān)控某個(gè)進(jìn)程的狀態(tài)。
q:該選項(xiàng)將使top沒(méi)有任何延遲的進(jìn)行刷新。
如果調(diào)用程序有超級(jí)用戶(hù)權(quán)限,那么top將以盡可能高的優(yōu)先級(jí)運(yùn)行。
S:指定累計(jì)模式。
s:使top命令在安全模式中運(yùn)行。這將去除交互命令所帶來(lái)的潛在危險(xiǎn)。
i:使top不顯示任何閑置或者僵死進(jìn)程。
c:顯示整個(gè)命令行而不只是顯示命令名。
常用命令說(shuō)明:Ctrl+L:擦除并且重寫(xiě)屏幕
K:終止一個(gè)進(jìn)程。
系統(tǒng)將提示用戶(hù)輸入需要終止的進(jìn)程PID,以及需要發(fā)送給該進(jìn)程什么樣的信號(hào)。
一般的終止進(jìn)程可以使用15信號(hào);如果不能正常結(jié)束那就使用信號(hào)9強(qiáng)制結(jié)束該進(jìn)程
默認(rèn)值是信號(hào)15。在安全模式中此命令被屏蔽。
i:忽略閑置和僵死進(jìn)程。這是一個(gè)開(kāi)關(guān)式命令。
q:退出程序
r:重新安排一個(gè)進(jìn)程的優(yōu)先級(jí)別。
系統(tǒng)提示用戶(hù)輸入需要改變的進(jìn)程PID以及需要設(shè)置的進(jìn)程優(yōu)先級(jí)值。
輸入一個(gè)正值將使優(yōu)先級(jí)降低,反之則可以使該進(jìn)程擁有更高的優(yōu)先權(quán)。
默認(rèn)值是10。S:切換到累計(jì)模式。
s:改變兩次刷新之間的延遲時(shí)間。
系統(tǒng)將提示用戶(hù)輸入新的時(shí)間,單位為s。
如果有小數(shù),就換算成m s。
輸入0值則系統(tǒng)將不斷刷新,默認(rèn)值是5 s。
需要注意的是如果設(shè)置太小的時(shí)間,很可能會(huì)引起不斷刷新,從而根本來(lái)不及看清顯示的情況,而且系統(tǒng)負(fù)載也會(huì)大大增加。
f或者F:從當(dāng)前顯示中添加或者刪除項(xiàng)目。o或者O:改變顯示項(xiàng)目的順序
l:切換顯示平均負(fù)載和啟動(dòng)時(shí)間信息。
m:切換顯示內(nèi)存信息。
t:切換顯示進(jìn)程和CPU狀態(tài)信息。
c:切換顯示命令名稱(chēng)和完整命令行。
M:根據(jù)駐留內(nèi)存大小進(jìn)行排序。
P:根據(jù)CPU使用百分比大小進(jìn)行排序。
T:根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序。
W:將當(dāng)前設(shè)置寫(xiě)入~/.toprc文件中。
uptime
uptime
10:01:30 up 8 days, 11 min, 2 users, load average: 0.01, 0.09, 0.16
當(dāng)前服務(wù)器時(shí)間: 10:01:30
當(dāng)前服務(wù)器運(yùn)行時(shí)長(zhǎng) 11 min
當(dāng)前用戶(hù)數(shù) 2 users
當(dāng)前的負(fù)載均衡 load average 0.01, 0.09, 0.16,
分別取1min,5min,15min的均值
vmstat
vmstat是Virtual Meomory Statistics(虛擬內(nèi)存統(tǒng)計(jì))的縮寫(xiě),可對(duì)操作系統(tǒng)的虛擬內(nèi)存、進(jìn)程、CPU活動(dòng)進(jìn)行監(jiān)控。是對(duì)系統(tǒng)的整體情況進(jìn)行統(tǒng)計(jì),不足之處是無(wú)法對(duì)某個(gè)進(jìn)程進(jìn)行深入分析。
Wireshark
主要用于捕捉網(wǎng)絡(luò)中的數(shù)據(jù),并為用戶(hù)提供關(guān)于網(wǎng)絡(luò)和上層協(xié)議的各種信息。
Wireshark之前名為Ethereal(而且現(xiàn)在仍經(jīng)常這么叫),是tcpdump的同類(lèi)工具,不過(guò)它更為高級(jí),擁有先進(jìn)得多的協(xié)議分析和報(bào)告功能。Wireshark既有GUI界面,又有外殼界面。如果你從事專(zhuān)業(yè)級(jí)的網(wǎng)絡(luò)管理工作,只能使用ethereal。
聯(lián)系客服