strace 跟蹤用戶空間進程的系統調用和信號,看進程具體在幹啥,萬能的strace也不是真正的萬能。當目標進程卡死在用戶態時,strace就沒有輸出了。express
使用方式:啓動時跟蹤strace ls -lh /var/log/messages;跟蹤已經啓動的進程 strace -p pid;網絡
應用場景:socket
一、定位進程異常退出:strace -o strace.log -tt -p 24298排序
二、定位共享內存異常:strace -tt -f -e trace=ipc ./a_mon_svr ../conf/a_mon_svr.conf 隊列
-e trace=ipc 選項,讓strace只跟蹤和進程通訊相關的系統調用。進程
-e expr -- a qualifying expression: option=[!]all or option=[!]val1[,val2]...
options: trace, abbrev, verbose, raw, signal, read, writeip
Linux內核目前有300多個系統調用,詳細的列表能夠經過syscalls手冊頁查看。這些系統調用主要分爲幾類:
文件和設備訪問類 好比open/close/read/write/chmod等 進程管理類 fork/clone/execve/exit/getpid等 信號類 signal/sigaction/kill 等 內存管理 brk/mmap/mlock等 進程間通訊IPC shmget/semget * 信號量,共享內存,消息隊列等 網絡通訊 socket/connect/sendto/sendmsg 等
ps auxw內存
u:以用戶爲主的格式來顯示程序情況get
x:顯示全部程序,不以終端機來區分 消息隊列
w:採用寬闊的格式來顯示程序情況
sort -rn -k5
-n是按照數字大小排序,-r是以相反順序,-k是指定須要排序的欄位
1.CPU佔用最多的前10個進程:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
2.內存消耗最多的前10個進程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
3.虛擬內存使用最多的前10個進程
ps auxw|head -1;ps auxw|sort -rn -k5|head -10
top命令而後界面輸入大寫的P,進程按照CPU消耗動態排序;大寫 M,進程按照 Mem 消耗動態排序