排查工具
工具
基础信息
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 | headtop
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 # 查看程序的动态链接库
plddel6
# 查看自启动服务 - 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最后更新于