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 消耗动态排序