如何查看当前进程有多少个存活线程呢?
方法1)pstree -p 4761(进程ID)。如下截图所示:
方法2)cat /proc/4761(进程ID)/status。如下图所示:
方法3)top -p 4761(进程ID),然后按H。如下图所示:
脚本解释:比如某台服务器的CPU使用率飙升,通过top命令查看是gitlab程序占用的cpu比较大,"ps -ef|grep gitlab"发现有很多个gitlab程序,现在需要查询gitlab各个进程下的线程数情况。批量查询命令如下:
# for pid in $(ps -ef|grep -v grep|grep gitlab|awk '{print $2}');do echo ${pid} > /root/a.txt ;cat /proc/${pid}/status|grep Threads > /root/b.txt;paste /root/a.txt /root/b.txt;done|sort -k3 -rn
-
1)for pid in $(ps -ef|grep -v grep|grep gitlab|awk '{print $2}')
-
定义${pid}变量为gitlab进程的pid号
-
2)echo ${pid} > /root/a.txt
-
将http进程的pid号都打印到/root/a.txt文件中
-
3)cat /proc/${pid}/status|grep Threads > /root/b.txt
-
将各个pid进程号下的线程信息打印到/root/b.txt文件中
-
4)paste /root/a.txt /root/b.txt
-
以列的形式展示a.txt和b/txt文件中的信息
-
5)sort -k3 -rn
-
-k3 表示以第三列进行排序
-
-rn 表示降序
=================来看个cup使用率告警问题处理案例==================