筆記:常用命令,調試,網絡監測,端口監測

前言

前幾個月換了一個新工作,Windows端完全轉入了Linux服務器端,語言也徹底變成了C,偶爾夾雜着C++。對於我來說,之前的Vxworks,Qt,VS之類的IDE之下的調試定位也完全都沒用了,最近一直在做提測項目,對問題定位,查找問題也有了一定的瞭解。
在這簡單說一下,最近的定位調試命令。

端口分析命令

lsof -i:PortID //查看端口使用情況,被那個進程佔用,佔用協議,是否有等待,來判斷端口是否阻塞,等等
lsof -p PID //查看PID進程進行的一些操作,查看是否有違規的,死鎖,等等其他違法操作。也可以用來查看是否有句柄泄露等問題,看句柄數量即可。

CPU佔用率過高,進程死循環或者死鎖問題

top //不復述了,可以查看虛擬內存,實際使用內存,CPU佔用率,內存佔用率等,如果看到CPU單核佔用率接近100%,也可以很明確斷定是程序異常死循環問題導致。
top -H -p PID //查看某一個進程下的所有子線程,查看每個子線程的這個屬性,如果有某一個或者多個子線程CPU佔用率過高,着重分析
pstack pid << pid.txt //將pid棧重定向到pid.txt,拿到txt後分析,死鎖原因

如果進程過多,可以考慮寫一個簡單腳本來操作。

死鎖問題定位

在運行進程爲多線程情況下,定位死鎖問題。

gdb -p pid //掛載Gdb調試
attach -p //依附於某一個進程
thread apply all bt //查看所有線程棧信息
thread id //轉到某一個線程
f id //查看線程某一步驟的詳細信息
p lock //打印鎖信息 owner 即可看到鎖被哪一個進程佔用,定位死鎖信息

網絡問題查看

iftop -p  //查看當前服務器下所有網絡端口流量情況
iftop -p eht_name //查看指定網口網絡流量情況
iperf3 -s -i 1 -d //客戶端
iperf3 -c service.ip -i -1 -t 20 -d //服務端 網絡流量交互情況,延時1S,20個包

其他命令

ps -ef 
ps -T -p pid
ps -ef |grep 
tail -f "file_name" |grep 
df -h
df -H
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章