監(jiān)測程序
查看進(jìn)程
ps 只顯示運行在當(dāng)前控制臺下的屬于當(dāng)前用戶的進(jìn)程
ps的輸出結(jié)果為:PID(Process ID)進(jìn)程ID轧铁、運行在的終端(TTY)别伏,以及進(jìn)程已用CPU時間,而不是進(jìn)程存在時間
對于Unix風(fēng)格的參數(shù)
-A 顯示所有進(jìn)程
-N 顯示所有與指定參數(shù)不符的所有進(jìn)程
-a 顯示除控制進(jìn)程(session leader)和無終端進(jìn)程外的所有進(jìn)程
-d 顯示除控制進(jìn)程外的所有進(jìn)程
-e 顯示所有進(jìn)程
-G grplist顯示組ID在grplist列表中的進(jìn)程
-F 顯示更多額外輸出(相較于-f參數(shù)而言)
-f 顯示完整格式的輸出
-H 用層級格式來顯示進(jìn)程
常用的命令組合如下:
ps -ef
- UID:啟動該進(jìn)程的用戶
- PID:進(jìn)程ID
- PPID:父進(jìn)程的ID
- C:進(jìn)程生命周期中的CPU利用率
- STIME:進(jìn)程啟動時的系統(tǒng)時間
- TTY:進(jìn)程啟動時的終端設(shè)備
- TIME:進(jìn)程累計占用的CPU時間
- CMD:啟動的程序名稱
ps -l
- F:內(nèi)核分配給進(jìn)程的系統(tǒng)標(biāo)識
- S:進(jìn)程狀態(tài)
- O 正在運行
- S 休眠
- R 可運行(正等待運行)
- Z 僵死(進(jìn)程已結(jié)束但父進(jìn)程已不存在)
- T 停止
- PRI:進(jìn)程優(yōu)先級(數(shù)字越大代表優(yōu)先級越低)
- NI:謙讓度菌瘫,用來參與決定優(yōu)先級
- ADDR:進(jìn)程的內(nèi)存地址
- SZ:假如進(jìn)程被換出熊户,所需交換空間的大致大小
- WCHAN:進(jìn)程休眠的內(nèi)核函數(shù)的地址
ps -ef --forest
顯示層級關(guān)系,類似圖表
實時監(jiān)測進(jìn)程
top 實時顯示
ps只能顯示某個特定時間點的信息验懊,不能進(jìn)行連續(xù)觀測擅羞,例如想觀察頻繁換進(jìn)換出內(nèi)存的進(jìn)程趨勢,需要使用top命令
- 輸出的第一行:當(dāng)前時間义图、系統(tǒng)的運行時間减俏、登錄的用戶數(shù)、系統(tǒng)的平均負(fù)載碱工。系統(tǒng)的平均負(fù)載有三個值:最近一分鐘娃承、最近五分鐘、最近十五分鐘的平均負(fù)載怕篷,值越大說明系統(tǒng)負(fù)載越高(一般超過2就說明比較繁忙了)
- 第二行:總共進(jìn)程历筝、運行狀態(tài)進(jìn)程、休眠匙头、停止漫谷、僵化。top命令輸出中將進(jìn)程成為任務(wù)(task)
- 第三行:(對于多核CPU蹂析,可能有多個第三行)us:用戶進(jìn)程占用CPU百分比舔示;sy:系統(tǒng)進(jìn)程占用CPU百分比;ni:用戶進(jìn)程中改變過優(yōu)先級的占用CPU百分比电抚;id:空閑CPU百分比惕稻;wa:等待輸入輸出的CPU時間百分比
- 第四行:系統(tǒng)物理內(nèi)存
- 第五行:系統(tǒng)交換區(qū)空間
- 最后一部分:
- PID:進(jìn)程ID
- USER:進(jìn)程屬主名字
- PR:進(jìn)程優(yōu)先級
- NI:進(jìn)程謙讓度值
- VIRT:進(jìn)程占用的虛擬內(nèi)存總量
- RES:進(jìn)程占用的物理內(nèi)存總量
- SHR:進(jìn)程和其他進(jìn)程共享的內(nèi)存總量
- S:進(jìn)程的狀態(tài)
- D:可中斷的休眠狀態(tài)
- R:運行狀態(tài)
- S:休眠狀態(tài)
- T:跟蹤狀態(tài)或停止?fàn)顟B(tài)
- Z: 僵化狀態(tài)
- %CPU:進(jìn)程使用的CPU時間比例
- %MEM:進(jìn)程使用的內(nèi)存占可用內(nèi)存的比例
- TIME+:自進(jìn)程啟動到目前為止的CPU時間總量
- COMMAND:進(jìn)程名
默認(rèn)情況下,top按照%CPU值來進(jìn)行排序蝙叛,可以通過鍵入f進(jìn)行自定義排序(有的Linux主機(jī)需要shift+f俺祠,然后鍵入對應(yīng)字母進(jìn)行自定義排序),鍵入d修改輪詢時間借帘,q退出
結(jié)束進(jìn)程
kill pid 殺死為pid的進(jìn)程
killall processA 殺死名為processA的所有進(jìn)程蜘渣,支持通配符
在Linux系統(tǒng)中,進(jìn)程之間通過信號進(jìn)行通信的肺然,信號值9為KILL(無條件終止)蔫缸,11為SEGV(段錯誤)
kill
<code>kill pid</code>會告訴進(jìn)程如果可能的話停止,進(jìn)程可自行忽略該請求际起,不停止拾碌。如果要強(qiáng)制停止吐葱,需要使用-s參數(shù)來指定信號(使用信號名或者信號值)
<code>kill -s KILL pid
kill -s 9 pid 或者 kill -9 pid</code>
killall
<code>killall</code>會按照進(jìn)程名而不是進(jìn)程ID來結(jié)束進(jìn)程
監(jiān)測磁盤空間
掛載存儲媒體
mount
umount
查看磁盤剩余空間
df
df命令顯示信息如下:
- 設(shè)備的設(shè)備文件位置
- 能容納多少個1024字節(jié)大小的塊
- 已用多少個塊
- 還能用多少個塊
- 已用空間所在百分比
- 設(shè)備掛載點
df -h會格式化輸出
查看磁盤使用空間
du
常見參數(shù):
<code>-c:會在最后顯示所有已列出的文件總大小
-h:按照用戶易讀格式輸出
-s:顯示每個輸出參數(shù)總計,如du -sh pathName 顯示pathName的大小</code>
處理數(shù)據(jù)文件
sort對數(shù)據(jù)進(jìn)行排序呢校翔,默認(rèn)會按照回話指定的默認(rèn)語言的排序規(guī)則對文本中數(shù)據(jù)行排序弟跑。
1. sort -n fileName 按數(shù)字值進(jìn)行排序,而不是按照字符
2. sort -M fileName 按月排序
3. sort -f fileName 忽略大小寫
4. sort -R fileName 按隨機(jī)生成的散列表的鍵值排序
5. sort -r fileName 反向排序
6. sort -k pos1[, pos2] 從域1開始排序防症,如果域2存在孟辑,則排序到域2結(jié)束
7. sort -t sep 指定一個用來區(qū)分鍵位置的字符sep
sort -t ':' -k 3 -n /etc/passwd
du -sh * | sort -nr
grep在指定的文件中查找包含指定字符的行,并返回該行告希,衍生包括egrep扑浸、fgrep烧给。
1. grep pattern fileName
2. grep -v pattern fileName 反向搜索:輸出不匹配該pattern的行
3. grep -n pattern fileName 輸出該pattern所在行號
4. grep -c pattern fileName 輸出共匹配行數(shù)(相當(dāng)于count)
5. grep -e pattern1 -e pattern2 fileName 指定多個patterns
6. grep [ab] fileName 使用正則表達(dá)式查找a或b的行(注意正則表達(dá)式要用[])</code>
gzip用來壓縮文件燕偶,壓縮后綴為.gz
gzcat用來查看壓縮過的文本文件內(nèi)容,有的系統(tǒng)為zcat
gunzip用來解壓.gz文件
tar歸檔础嫡,在Unix與Linux上使用較gzip廣泛指么,能夠?qū)⒄麄€目錄都?xì)w檔到單個文件中,方便數(shù)據(jù)遷移
-A 將一個已有tar歸檔文件追加到另一個已有tar歸檔文件
-c 創(chuàng)建一個新的tar歸檔文件
-t 列出已有tar歸檔內(nèi)容
-f fileName 輸出結(jié)果到文件中
-x 從已有tar歸檔文件中提取文件
-v 在處理文件時顯示文件
-z 將輸出重定向給gzip命令來壓縮內(nèi)容
tar -cvf test.tar test1/ test2/ 將test1和test2目錄內(nèi)容歸檔到test.tar中
tar -tf test.tar 列出test.tar中內(nèi)容榴鼎,但并不提取
tar -xvf 提取
tar -zxvf 解壓用gzip壓縮過的tar文件伯诬,通常以.tgz結(jié)尾
參考文章
Linux Command Line and Shell Scripting Bible
該系列其他文章請查看:
Linux命令行與shell腳本