龙空技术网

学一个Linux命令-pstree

运维贼船 78

前言:

今天同学们对“java获取进程子pid pstree”大体比较着重,兄弟们都想要学习一些“java获取进程子pid pstree”的相关知识。那么小编同时在网络上搜集了一些对于“java获取进程子pid pstree””的相关知识,希望你们能喜欢,我们快快来学习一下吧!

pstree是一个Linux下的命令,通过它可以列出当前的进程,以及它他们的树状结构。通过pstree可用于分析进程的状态、进程间关系以及在特定的场合,比病毒排查中有重要的作用。

说直白一点,即ps+tree,ps命令可以显示当前正在运行的那些进程的信息,tree主要功能是创建文件列表,将所有文件以树的形式列出来。pstree命令是用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,以树状展示,可以清楚地看出来是谁创建了谁。

安装

默认系统中是没有安装pstree命令的,使用pstree需要安装psmisc软件包。

#不同的操作系统使用以下命令来安装#在 Mac OS上brew install pstree#在 Fedora/Red Hat/CentOSyum -y install psmisc#在 Ubuntu/Debianapt-get install psmisc
语法
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]#或使用man函数查找使用方法man pstree 

-a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号

-c 如果有重复的行程名, 则分开列出(预设值是会在前面加上 *) -A: 各进程树之间的连接以ASCII码字符来连接 -U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误 -p:同时列出每个进程的PID -u: 同时列出每个进程的所属账号名称:

例子

#1.以树状图只显示进程的名字,且相同进程合并显示:[root@blog ~]# pstreesystemd─┬─NetworkManager───2*[{NetworkManager}]        ├─YDLive───6*[{YDLive}]        ├─YDService─┬─YDEdr───11*[{YDEdr}]        │           └─22*[{YDService}]        ├─acpid        ├─2*[agetty]        ├─atd        ├─auditd───{auditd}        ├─barad_agent─┬─barad_agent        │             └─barad_agent───4*[{barad_agent}]        ├─crond        ├─dbus-daemon……#2.显示进程并显示pid,每个进程括号里的则进pid号[root@blog ~]# pstree -psystemd(1)─┬─NetworkManager(32014)─┬─{NetworkManager}(32020)           │                       └─{NetworkManager}(32022)           ├─YDLive(1804)─┬─{YDLive}(1805)           │              ├─{YDLive}(1806)           │              ├─{YDLive}(1807)           │              ├─{YDLive}(1810)           │              ├─{YDLive}(1813)           │              └─{YDLive}(21032)           ├─YDService(1812)─┬─YDEdr(1828)─┬─{YDEdr}(1832)           │                 │             ├─{YDEdr}(1833)           │                 │             ├─{YDEdr}(1834)           │                 │             ├─{YDEdr}(1835)           │                 │             ├─{YDEdr}(1836)           │                 │             ├─{YDEdr}(1837)           │                 │             ├─{YDEdr}(1838)           │                 │             ├─{YDEdr}(1839)           │                 │             ├─{YDEdr}(1840)           │                 │             ├─{YDEdr}(1841)           │                 │             └─{YDEdr}(1855)           │                 ├─{YDService}(1814)……#3.查看pid的进程与子进程:pstree -p [pid][root@blog ~]# pstree -p 1408sshd(1408)───sshd(24182)─┬─bash(19110)───sleep(19120)                         ├─bash(24184)───pstree(19135)                         ├─bash(24231)───top(24325)                         └─sftp-server(24223)#4.以树状图显示进程,相同名称的进程不合并显示,并且会显示命令行参数。[root@blog ~]# pstree -asystemd --switched-root --system --deserialize 22  ├─NetworkManager --no-daemon  │   └─2*[{NetworkManager}]  ├─YDLive  │   └─6*[{YDLive}]  ├─YDService  │   ├─YDEdr  │   │   └─11*[{YDEdr}]  │   └─22*[{YDService}]  ├─acpid  ├─agetty --noclear tty1 linux  ├─agetty --keep-baud 115200,38400,9600 ttyS0 vt220  ├─atd -f  ├─auditd  │   └─{auditd}  ├─barad_agent  │   ├─barad_agent  │   └─barad_agent  │       ├─sh -c ntpdate -b -d ntpupdate.tencentyun.com 2>&1 | grep 'step time server' | sed -r 's/.*offset(.*)sec.*/\\1/'  │       │   ├─grep step time server……

以上为常用的参数搭配,可实践敲一下,感受下Linux系统设计与pstree命令巧妙之处。

欢迎关注微信公众号“运维贼船”,获得更多有趣知识~

标签: #java获取进程子pid pstree #centos pstree