一、Linux樹狀目錄結構:

二、linux查詢某個程序的某個進程的id?
PID 代表進程標識號process identification,它在大多數操作系統內核(如 Linux、Unix、macOS 和 Windows)中使用。它是在操作系統中創建時自動分配給每個進程的唯一標識號。一個進程是一個正在運行的程序實例。
除了 init 進程外,其他所有的進程 ID 每次都會改變,因為 init 始終是系統上的第一個進程,並且是所有其他進程的父進程。它的 PID 是 1。PID 默認的最大值是 32768(2^15)。可以在你的系統上運行 cat /proc/sys/kernel/pid_max 來驗證。在 32 位系統上,32768 是最大值,但是我們可以在 64 位系統上將其設置為最大 2^22(約 4 百萬)內的任何值。
為什么需要這么多的 PID?因為我們不能立即重用 PID。另外為了防止可能的錯誤。
系統正在運行的進程的 PID 可以通過使用 pidof、pgrep、ps 和 pstree 命令找到。
方法 1:使用 pidof 命令
pidof 用於查找正在運行的程序的進程 ID。它在標准輸出上打印這些 id。為了演示,我們將在 Debian 9(stretch)系統中找出 Apache2 的進程 ID。
# pidof apache2 3754 2594 2365 2364 2363 2362 2361
從上面的輸出中,你可能會遇到難以識別進程 ID 的問題,因為它通過進程名稱顯示了所有的 PID(包括父進程和子進程)。因此,我們需要找出父 PID(PPID),這是我們要查找的。它可能是第一個數字。在本例中,它是 3754,並按降序排列。
方法 2:使用 pgrep 命令
pgrep 遍歷當前正在運行的進程,並將符合選擇條件的進程 ID 列到標准輸出中。
# pgrep apache2 2361 2362 2363 2364 2365 2594 3754
這也與上面的輸出類似,但是它將結果從小到大排序,這清楚地說明父 PID 是最后一個。在本例中,它是 3754。
注意: 如果你有多個進程的進程 ID,那么在使用 pidof 和 pgrep 識別父進程 ID 時就可能不會很順利。
方法 3:使用 pstree 命令
pstree 將運行的進程顯示為一棵樹。樹的根是某個 pid,如果省略了 pid 參數,那么就是 init。如果在 pstree命令中指定了用戶名,則顯示相應用戶擁有的所有進程。
pstree 會將相同的分支放在方括號中,並添加重復計數的前綴來可視化地合並到一起。
# pstree -p | grep "apache2" |- apache2(3754) -|-apache2(2361) | |-apache2(2362) | |-apache2(2363) | |-apache2(2364) | |-apache2(2365) | |-apache2(2594)
要單獨獲取父進程,請使用以下格式。
# pstree -p | grep "apache2" | head -1 |- apache2(3754) -|-apache2(2361)
pstree 命令非常簡單,因為它分別隔離了父進程和子進程,但這在使用 pidof 和 pgrep 時命令不容易做到。
方法 4:使用 ps 命令
ps 顯示活動進程的選擇信息。它顯示進程 ID(pid=PID)、與進程關聯的終端(tname=TTY)、以 [DD-]hh:mm:ss 格式(time=TIME)顯示的累計 CPU 時間、以及執行名(ucmd = CMD)。輸出默認是未排序的。
# ps aux | grep "apache2" www-data 2361 0.0 0.4 302652 9732 ? S 06:25 0:00 /usr/sbin/apache2 -k start www-data 2362 0.0 0.4 302652 9732 ? S 06:25 0:00 /usr/sbin/apache2 -k start www-data 2363 0.0 0.4 302652 9732 ? S 06:25 0:00 /usr/sbin/apache2 -k start www-data 2364 0.0 0.4 302652 9732 ? S 06:25 0:00 /usr/sbin/apache2 -k start www-data 2365 0.0 0.4 302652 8400 ? S 06:25 0:00 /usr/sbin/apache2 -k start www-data 2594 0.0 0.4 302652 8400 ? S 06:55 0:00 /usr/sbin/apache2 -k start root 3754 0.0 1.4 302580 29324 ? Ss Dec11 0:23 /usr/sbin/apache2 -k start root 5648 0.0 0.0 12784 940 pts/0 S+ 21:32 0:00 grep apache2
從上面的輸出中,我們可以根據進程的啟動日期輕松地識別父進程 ID(PPID)。在此例中,apache2 啟動於 Dec 11,它是父進程,其他的是子進程。apache2 的 PID 是 3754。
三、生產上線常用Linux命令:
1、ls -rlt :
ls命令用來顯示目標列表,在Linux中是使用率較高的命令。ls命令的輸出信息可以進行彩色加亮顯示,以分區不同類型的文件。
-r:以文件名反序排列並輸出目錄內容列表;
-l:以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名,文件類型、權限模式、硬連接數、所有者、組、文件大小和文件的最后修改時間等;
-s:顯示文件和目錄的大小,以區塊為單位;
2、tar :
語法:tar(選項)(參數)
選項:
-x或--extract或--get:從備份文件中還原文件;
-c或--create:建立新的備份文件;
-v:顯示操作過程;
-f<備份文件>或--file=<備份文件>:指定備份文件;
-t或--list:列出備份文件的內容;
參數:文件或目錄:指定要打包的文件或目錄列表。
實例:
tar -cvf 打包文件名 原文件名 : 打包文件
tar -xvf 打包文件名 : 解壓文件
3、cp :
語法:cp(選項)(參數)
選項:-R/r:遞歸處理,將指定目錄下的所有文件與子目錄一並處理;
實例:
cp ../mary/homework/assign . 將指定文件復制到當前目錄下;
cp file /usr/men/tmp/file1 將文件file復制到目錄/usr/men/tmp下,並改名為file1;
cp -r /usr/men /usr/zh 將目錄/usr/men下的所有文件及其子目錄復制到目錄/usr/zh中;
4、mv :
mv命令可以用來將源文件移至一個目標文件中,或將一組文件移至一個目標目錄中。源文件被移至目標文件有兩種不同的結果:
- 如果目標文件是到某一目錄文件的路徑,源文件會被移到此目錄下,且文件名不變。
- 如果目標文件不是目錄文件,則源文件名(只能有一個)會變為此目標文件名,並覆蓋己存在的同名文件。如果源文件和目標文件在同一個目錄下,mv的作用就是改文件名。當目標文件是目錄文件時,源文件或目錄參數可以有多個,則所有的源文件都會被移至目標文件中。所有移到該目錄下的文件都將保留以前的文件名。
注意事項:mv與cp的結果不同,mv好像文件“搬家”,文件個數並未增加。而cp對文件進行復制,文件個數增加了。
語法:mv(選項)(參數)
實例:
mv /usr/men/* . 將目錄/usr/men中的所有文件移到當前目錄(用.表示)中;
mv ex3 new1 將文件ex3改名為new1;
5、cat :
cat命令連接文件並打印到標准輸出設備上,cat經常用來顯示文件的內容,類似於下的type命令。
注意:當文件較大時,文本在屏幕上迅速閃過(滾屏),用戶往往看不清所顯示的內容。因此,一般用more等命令分屏顯示。為了控制滾屏,可以按Ctrl+S鍵,停止滾屏;按Ctrl+Q鍵可以恢復滾屏。按Ctrl+C(中斷)鍵可以終止該命令的執行,並且返回Shell提示符狀態。
語法:cat(選項)(參數)
選項:
-n或-number:有1開始對所有輸出的行數編號;
-b或--number-nonblank:和-n相似,只不過對於空白行不編號;
-s或--squeeze-blank:當遇到有連續兩行以上的空白行,就代換為一行的空白行;
-A:顯示不可打印字符,行尾顯示“$”;
實例:
cat m1 (在屏幕上顯示文件ml的內容)
cat m1 m2 (同時顯示文件ml和m2的內容)
cat m1 m2 > file (將文件ml和m2合並后放入文件file中)
6、pwd :
以絕對路徑的方式顯示用戶當前工作目錄。命令將當前目錄的全路徑名稱(從根目錄)寫入標准輸出。全部目錄使用/分隔。第一個/表示根目錄,最后一個目錄是當前目錄。執行pwd命令可立刻得知您目前所在的工作目錄的絕對路徑名稱。
語法:pwd(選項)
7、lsblk :
查看所有設備掛載情況 (諧音:樓上暴力狂)
8、df :
9、ps :
用於報告當前系統的進程狀態。可以搭配kill指令隨時中斷、刪除不必要的程序。
ps命令是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等等,總之大部分信息都是可以通過執行該命令得到的。
-e:此選項的效果和指定"A"選項相同。
vmstat命令的含義為顯示虛擬內存狀態(“Viryual Memor Statics”),但是它可以報告關於進程、內存、I/O等系統整體運行狀態。
語法:vmstat(選項)(參數)
選項:
-a:顯示活動內頁; -f:顯示啟動后創建的進程總數; -m:顯示slab信息; -n:頭信息僅顯示一次; -s:以表格方式顯示事件計數器和內存狀態; -d:報告磁盤狀態; -p:顯示指定的硬盤分區狀態; -S:輸出信息的單位。
參數
- 事件間隔:狀態信息刷新的時間間隔;
- 次數:顯示報告的次數。
實例
vmstat 3
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 320 42188 167332 1534368 0 0 4 7 1 0 0 0 99 0 0 0 0 320 42188 167332 1534392 0 0 0 0 1002 39 0 0 100 0 0 0 0 320 42188 167336 1534392 0 0 0 19 1002 44 0 0 100 0 0 0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0 0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0
字段說明:
Procs(進程)
- r: 運行隊列中進程數量,這個值也可以判斷是否需要增加CPU。(長期大於1)
- b: 等待IO的進程數量。
Memory(內存)
- swpd: 使用虛擬內存大小,如果swpd的值不為0,但是SI,SO的值長期為0,這種情況不會影響系統性能。
- free: 空閑物理內存大小。
- buff: 用作緩沖的內存大小。
- cache: 用作緩存的內存大小,如果cache的值大的時候,說明cache處的文件數多,如果頻繁訪問到的文件都能被cache處,那么磁盤的讀IO bi會非常小。
Swap
- si: 每秒從交換區寫到內存的大小,由磁盤調入內存。
- so: 每秒寫入交換區的內存大小,由內存調入磁盤。
注意:內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。有些朋友看到空閑內存(free)很少的或接近於0時,就認為內存不夠用了,不能光看這一點,還要結合si和so,如果free很少,但是si和so也很少(大多時候是0),那么不用擔心,系統性能這時不會受到影響的。
IO(現在的Linux版本塊的大小為1kb)
- bi: 每秒讀取的塊數
- bo: 每秒寫入的塊數
注意:隨機磁盤讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。
system(系統)
- in: 每秒中斷數,包括時鍾中斷。
- cs: 每秒上下文切換數。
注意:上面2個值越大,會看到由內核消耗的CPU時間會越大。
CPU(以百分比表示)
- us: 用戶進程執行時間百分比(user time)
us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那么我們就該考慮優化程序算法或者進行加速。
- sy: 內核系統進程執行時間百分比(system time)
sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。
- wa: IO等待時間百分比
wa的值高時,說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。
- id: 空閑時間百分比
11、free :
free命令可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩沖區。
語法:free(選項)
選項:
-b:以Byte為單位顯示內存使用情況; -k:以KB為單位顯示內存使用情況; -m:以MB為單位顯示內存使用情況; -o:不顯示緩沖區調節列; -s<間隔秒數>:持續觀察內存使用狀況; -t:顯示內存總和列; -V:顯示版本信息。
實例:free -m
total used free shared buffers cached Mem: 2016 1973 42 0 163 1497 -/+ buffers/cache: 312 1703 Swap: 4094 0 4094
第一部分Mem行解釋:
total:內存總數; used:已經使用的內存數; free:空閑的內存數; shared:當前已經廢棄不用; buffers Buffer:緩存內存數; cached Page:緩存內存數。
關系:total = used + free
第二部分(-/+ buffers/cache)解釋:
(-buffers/cache) used內存數:第一部分Mem行中的 used – buffers – cached (+buffers/cache) free內存數: 第一部分Mem行中的 free + buffers + cached
可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數。
第三部分是指交換分區。
12、top :
top命令可以實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。通過top命令所提供的互動式界面,用熱鍵可以管理。
語法:top(選項)
選項:
-b:以批處理模式操作; -c:顯示完整的治命令; -d:屏幕刷新間隔時間; -I:忽略失效過程; -s:保密模式; -S:累積模式; -i<時間>:設置間隔時間; -u<用戶名>:指定用戶名; -p<進程號>:指定進程; -n<次數>:循環顯示的次數。
top交互命令
在top命令執行過程中可以使用的一些交互命令。這些命令都是單字母的,如果在命令行中使用了-s選項, 其中一些命令可能會被屏蔽。
h:顯示幫助畫面,給出一些簡短的命令總結說明;
k:終止一個進程;
i:忽略閑置和僵死進程,這是一個開關式命令;
q:退出程序;
r:重新安排一個進程的優先級別;
S:切換到累計模式;
s:改變兩次刷新之間的延遲時間(單位為s),如果有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5s;
f或者F:從當前顯示中添加或者刪除項目;
o或者O:改變顯示項目的順序;
l:切換顯示平均負載和啟動時間信息;
m:切換顯示內存信息;
t:切換顯示進程和CPU狀態信息;
c:切換顯示命令名稱和完整命令行;
M:根據駐留內存大小進行排序;
P:根據CPU使用百分比大小進行排序;
T:根據時間/累計時間進行排序;
w:將當前設置寫入~/.toprc文件中。
實例:
top - 09:44:56 up 16 days, 21:23, 1 user, load average: 9.59, 4.75, 1.92
Tasks: 145 total, 2 running, 143 sleeping, 0 stopped, 0 zombie
Cpu(s): 99.8%us, 0.1%sy, 0.0%ni, 0.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4147888k total, 2493092k used, 1654796k free, 158188k buffers Swap: 5144568k total, 56k used, 5144512k free, 2013180k cached
解釋:
- top - 09:44:56[當前系統時間],
- 16 days[系統已經運行了16天],
- 1 user[個用戶當前登錄],
- load average: 9.59, 4.75, 1.92[系統負載,即任務隊列的平均長度]
- Tasks: 145 total[總進程數],
- 2 running[正在運行的進程數],
- 143 sleeping[睡眠的進程數],
- 0 stopped[停止的進程數],
- 0 zombie[凍結進程數],
- Cpu(s): 99.8%us[用戶空間占用CPU百分比],
- 0.1%sy[內核空間占用CPU百分比],
- 0.0%ni[用戶進程空間內改變過優先級的進程占用CPU百分比],
- 0.2%id[空閑CPU百分比], 0.0%wa[等待輸入輸出的CPU時間百分比],
- 0.0%hi[],
- 0.0%st[],
- Mem: 4147888k total[物理內存總量],
- 2493092k used[使用的物理內存總量],
- 1654796k free[空閑內存總量],
- 158188k buffers[用作內核緩存的內存量]
- Swap: 5144568k total[交換區總量],
- 56k used[使用的交換區總量],
- 5144512k free[空閑交換區總量],
- 2013180k cached[緩沖的交換區總量],
13、sudo :
sudo命令用來以其他身份來執行命令,預設的身份為root。在/etc/sudoers中設置了可執行sudo指令的用戶。若其未經授權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,之后有5分鍾的有效期限,超過期限則必須重新輸入密碼。
語法:sudo(選項)(參數)
選項:
-b:在后台執行指令; -h:顯示幫助; -H:將HOME環境變量設為新身份的HOME環境變量; -k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。 -l:列出目前用戶可執行與無法執行的指令; -p:改變詢問密碼的提示符號; -s<shell>:執行指定的shell; -u<用戶>:以指定的用戶作為新的身份。若不加上此參數,則預設以root作為新的身份; -v:延長密碼有效期限5分鍾; -V :顯示版本信息。
14、grep :
grep(global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。
選項:
-a 不要忽略二進制數據。
-A<顯示列數> 除了顯示符合范本樣式的那一行之外,並顯示該行之后的內容。
-b 在顯示符合范本樣式的那一行之外,並顯示該行之前的內容。
-c 計算符合范本樣式的列數。
-C<顯示列數>或-<顯示列數> 除了顯示符合范本樣式的那一列之外,並顯示該列之前后的內容。
-d<進行動作> 當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep命令將回報信息並停止動作。
-e<范本樣式> 指定字符串作為查找文件內容的范本樣式。
-E 將范本樣式為延伸的普通表示法來使用,意味着使用能使用擴展正則表達式。
-f<范本文件> 指定范本文件,其內容有一個或多個范本樣式,讓grep查找符合范本條件的文件內容,格式為每一列的范本樣式。
-F 將范本樣式視為固定字符串的列表。
-G 將范本樣式視為普通的表示法來使用。
-h 在顯示符合范本樣式的那一列之前,不標示該列所屬的文件名稱。
-H 在顯示符合范本樣式的那一列之前,標示該列的文件名稱。
-i 忽略字符大小寫的差別。
-l 列出文件內容符合指定的范本樣式的文件名稱。
-L 列出文件內容不符合指定的范本樣式的文件名稱。
-n 在顯示符合范本樣式的那一列之前,標示出該列的編號。
-q 不顯示任何信息。
-R/-r 此參數的效果和指定“-d recurse”參數相同。
-s 不顯示錯誤信息。
-v 反轉查找。
-w 只顯示全字符合的列。
-x 只顯示全列符合的列。
-y 此參數效果跟“-i”相同。
-o 只輸出文件中匹配到的部分。
grep命令常見用法
在文件中搜索一個單詞,命令會返回一個包含“match_pattern”的文本行:
grep match_pattern file_name grep "match_pattern" file_name
在多個文件中查找:
grep "match_pattern" file_1 file_2 file_3 ...
輸出除之外的所有行 -v 選項:
grep -v "match_pattern" file_name
標記匹配顏色 --color=auto 選項:
grep "match_pattern" file_name --color=auto
使用正則表達式 -E 選項:
grep -E "[1-9]+"
或
egrep "[1-9]+"
只輸出文件中匹配到的部分 -o 選項:
echo this is a test line. | grep -o -E "[a-z]+\." line. echo this is a test line. | egrep -o "[a-z]+\." line.
統計文件或者文本中包含匹配字符串的行數 -c 選項:
grep -c "text" file_name
輸出包含匹配字符串的行數 -n 選項:
grep "text" -n file_name
或
cat file_name | grep "text" -n
#多個文件
grep "text" -n file_1 file_2
打印樣式匹配所位於的字符或字節偏移:
echo gun is not unix | grep -b -o "not" 7:not #一行中字符串的字符便宜是從該行的第一個字符開始計算,起始值為0。選項 -b -o 一般總是配合使用。
搜索多個文件並查找匹配文本在哪些文件中:
grep -l "text" file1 file2 file3...
grep遞歸搜索文件
在多級目錄中對文本進行遞歸搜索:
grep "text" . -r -n # .表示當前目錄。
忽略匹配樣式中的字符大小寫:
echo "hello world" | grep -i "HELLO" hello
選項 -e 制動多個匹配樣式:
echo this is a text line | grep -e "is" -e "line" -o is line #也可以使用-f選項來匹配多個樣式,在樣式文件中逐行寫出需要匹配的字符。 cat patfile aaa bbb echo aaa bbb ccc ddd eee | grep -f patfile -o
在grep搜索結果中包括或者排除指定文件:
#只在目錄中所有的.php和.html文件中遞歸搜索字符"main()"
grep "main()" . -r --include *.{php,html}
#在搜索結果中排除所有README文件
grep "main()" . -r --exclude "README"
#在搜索結果中排除filelist文件列表里的文件
grep "main()" . -r --exclude-from filelist
使用0值字節后綴的grep與xargs:
#測試文件:
echo "aaa" > file1
echo "bbb" > file2
echo "aaa" > file3
grep "aaa" file* -lZ | xargs -0 rm #執行后會刪除file1和file3,grep輸出用-Z選項來指定以0值字節作為終結符文件名(\0),xargs -0 讀取輸入並用0值字節終結符分隔文件名,然后刪除匹配文件,-Z通常和-l結合使用。
grep靜默輸出:
grep -q "test" filename #不會輸出任何信息,如果命令運行成功返回0,失敗則返回非0值。一般用於條件測試。
打印出匹配文本之前或者之后的行:
#顯示匹配某個結果之后的3行,使用 -A 選項:
seq 10 | grep "5" -A 3
5
6
7
8
#顯示匹配某個結果之前的3行,使用 -B 選項:
seq 10 | grep "5" -B 3
2
3
4
5
#顯示匹配某個結果的前三行和后三行,使用 -C 選項:
seq 10 | grep "5" -C 3
2
3
4
5
6
7
8
#如果匹配結果有多個,會用“--”作為各匹配結果之間的分隔符:
echo -e "a\nb\nc\na\nb\nc" | grep a -A 1 a b -- a b
15、wc :
wc命令用來計算數字。利用wc指令我們可以計算文件的Byte數、字數或是列數,若不指定文件名稱,或是所給予的文件名為“-”,則wc指令會從標准輸入設備讀取數據。
語法:wc(選項)(參數)
選項:
-c或--bytes或——chars:只顯示Bytes數;
-l或——lines:只顯示列數;
-w或——words:只顯示字數。
參數:
文件:需要統計的文件列表。
實例:
cat mytest.sql | grep ba_0001 | wc -l
其他:
sudo su:切換到超級管理員
cd /:回到當前系統的根目錄
cd ~:回到當前用戶家目錄
cd -:回到上一次所在目錄
pwd:打印當前的工作目錄
ls -l:查看當前目錄下所有文件
ls -R:遞歸查看目錄里面的內容
ls -F:選項會在顯示目錄條目時,在目錄后加一個/
ls -ltr:逆序羅列最新修改過的文件
VI : 進入編譯模式
head -n 10 文件名:查看文件頭10行
tail -n 10 文件名:查看文件后10行
head -n 20 /etc/man.config | tail -n 10:顯示/etc/man.config的第11到20行
tar -zcvf XXX.tar.gz n1.txt n2.txt:壓縮文件
tar -zxvf XXX.tar.gz : 解壓文件
rmdir:刪除空目錄
mkdir:創建目錄
touch:新建文件
ps -aux:查看進程,然后再利用一個管道符號導向到grep去查找特定的進程 ,然后再對特定的進程進行操作。
ps -ef:是以全格式顯示當前所有的進程
ifconfig :查看IP地址信息(網絡配置類)
fdisk -l | df -h:磁盤分區類
top:系統整體性能評估
vmstat:檢測是否存在CPU瓶頸
free:檢測是否存在內存瓶頸
iostat :檢測是否存在磁盤I/O瓶頸
netstat :檢測是否存在網絡I/O瓶頸
ps:可以查看進程以及進程中cpu的使用情況
面試題:
top可以看到的cpu信息有:
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
具體的解釋如下:
Tasks: 29 total 進程總數
1 running 正在運行的進程數
28 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 僵屍進程數
Cpu(s):
0.3% us 用戶空間占用CPU百分比
1.0% sy 內核空間占用CPU百分比
0.0% ni 用戶進程空間內改變過優先級的進程占用CPU百分比
98.7% id 空閑CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
0.0% wa 的百分比可以大致的體現出當前的磁盤io請求是否頻繁。如果 wa的數量比較大,說明等待輸入輸出的的io比較多。
第二種:用vmstat:
vmstat 命令報告關於線程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息。由 vmstat 命令生成的報告可以用於平衡系統負載活動。系統范圍內的這些統計信息(所有的處理器中)都計算出以百分比表示的平均值,或者計算其總和。
輸入命令:
vmstat 2 5
如果發現等待的進程和處在非中斷睡眠狀態的進程數非常多,並且發送到塊設備的塊數和從塊設備接收到的塊數非常大,那就說明磁盤io比較多。
vmstat參數解釋:
Procs
r: 等待運行的進程數 b: 處在非中斷睡眠狀態的進程數 w: 被交換出去的可運行的進程數。此數由 linux 計算得出,但 linux 並不耗盡交換空間
Memory
swpd: 虛擬內存使用情況,單位:KB
free: 空閑的內存,單位KB
buff: 被用來做為緩存的內存數,單位:KB
Swap
si: 從磁盤交換到內存的交換頁數量,單位:KB/秒
so: 從內存交換到磁盤的交換頁數量,單位:KB/秒
IO
bi: 發送到塊設備的塊數,單位:塊/秒
bo: 從塊設備接收到的塊數,單位:塊/秒
System
in: 每秒的中斷數,包括時鍾中斷
cs: 每秒的環境(上下文)切換次數
CPU
按 CPU 的總使用百分比來顯示
us: CPU 使用時間
sy: CPU 系統使用時間
id: 閑置時間
准測
更多vmstat使用信息
第二種:用iostat
安裝:
Iostat 是 sysstat 工具集的一個工具,需要安裝。
Centos的安裝方式是:
yum install sysstat
Ubuntu的安裝方式是:
aptitude install sysstat
使用:
iostat -dx 顯示磁盤擴展信息
root@fileapp:~# iostat -dx
r/s 和 w/s 分別是每秒的讀操作和寫操作,而rKB/s 和wKB/s 列以每秒千字節為單位顯示了讀和寫的數據量
如果這兩對數據值都很高的話說明磁盤io操作是很頻繁。
