排查工具

排查工具

工具

基础信息

pidof program           # 查看某名称进程的pid

pstack pid                  # 前运行时的堆栈

kill $(pgrep program_name)
kill -9 $(ps -ef | grep proc_name | grep -v grep | awk '{print $2}')

ps

ps -o nlwp -p 463133        # 查看线程数
ps -mfL <PID>               # 查看进程的线程

# 查看某进程的 启动时间 - 运行时长(占用CPU的时间)
ps -ef|grep -v grep|grep -w chrome|awk '{print $1, $2, $5, "-", $7}'

ps -eo pid,lstart,etime,args         # 查看进程启动时间


# 自定义输出格式
ps -eo pid,lstart,etime
ps -eo user,pid,ppid,lstart,etime,stat,size,exe
ps -eo user,pid,ppid,lstart,etime,stat,size,cmd | grep java

# 查询僵尸进程
ps aux | awk '{print $8}' | grep 'Z'
ps -lfe | awk '{print $2}' | grep ^Z
ps -ef | grep defunct

# 按内存占用大小排序进程
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

top

top -H -p <pid>             # 显示某进程的线程情况 | top -Hp <pid>

线程信息


# 统计进程的线程信息
pstree -p 7001 | wc -l
grep Threads /proc/7001/status
top -bH -d 3 -p 7001
ps -eLf | grep 3322                             # 查询某进程的线程信息

ls -l /proc/<pid>/task/ | wc -l                 # 进程的线程数
ls -l /proc/<pid>/fd/ | wc -l                   # 进程打开的文件描述符数

/usr/sbin/lsof -n |awk '{print $2} " " $3'|sort|uniq -c |sort -nr|more

ps -eLo ruser | awk 'NR>1' | sort | uniq -c     # 统计 real user的进程线程数

ps -elfT | wc -l            # 统计系统当前启动的进程/线程总数

cat /proc/1369/environ |tr -s '\0' '\n'         # 查看某个进程启动的信息

strace

用户态的函数调用跟踪用

ltrace -p pid
ltrace -p 15547 -T -s 51200 -S -r -i -c

内核态的系统调用跟踪用

strace
strace -c -f -p 18775       # 输出汇总统计
strace -T -t -f -p 15545    # 查看进程详细动作

strace -fp 5211 -e trace=open,stat,close,unlink
                            # 跟踪指定动作

## -f表示跟踪子进程和子线程,-T表示显示系统调用的时长,-tt表示显示跟踪时间
strace -f -T -tt -p ${Pid} -o trace.log

综合


dstat -tampl

pidstat -w          # 统计进程自愿/非自愿上下文切换

sar -r              # 查看历史期间 内存/SWAP 的使用情况
sar -P ALL 2 10

dmesg               # 显示开机信息

lsmod               # 查看内核模块
uptime              # 查看服务器启动时间

ldd                 # 查看程序的动态链接库
pldd

el6

# 查看自启动服务 - el6
chkconfig --list | awk '{if ($5=="3:on") print $1}'

文件

/usr/sbin/lsof | wc -l
/usr/sbin/lsof | grep lim
lsof |grep delete                   # 查看处于删除状态的进程
ulimit -a | grep open
最后更新于