9.2-3 pstree & pgrep
9.2 pstree:显示进程状态树
pstree命令以树形结构显示进程和进程之间的关系。
如果不指定进程的PID号,或者不指定用户名称,则会以init进程为根进程,显示系统的所有进程信息;若指定用户或PID,则将以用户或PID为根进程,显示用户或PID对应的所有进程。
pstree [选项] [进程号/用户]
参数选项及说明
-a 显示启动每个进程对应的完整指令,包含启动进程的路径、参数等
-c 不精简显示进程信息,即显示的进程中包含子进程和父进程
-h 对现在执行的程序进行特别标注
-n 根据进程PID号来排序输出,默认是以程序名称排序输出的
-p 显示进程的PID
-u 显示进程对应的用户名称
显示进程树
[root@cs6 ~]# pstree init─┬─auditd───{auditd} ├─crond ├─master─┬─pickup │ └─qmgr ├─6*[mingetty] ├─rsyslogd───3*[{rsyslogd}] ├─sshd───sshd───bash───pstree └─udevd───2*[udevd]
显示指定用户的进程
[root@doit ~]# pstree mysql #<==mysql是系统的用户名。 mysqld_safe───mysqld───40*[{mysqld}] #<==该输出显示了mysql用户下对应的进程为mysqld,并且msqyld 进程拥有40个线程 [root@doit ~]# pstree -c -p mysql #<=使用-c选项显示所有进程,包含子进程和父进程,使用-p选项显示进程的进程号。 mysqld_safe(3560)───mysqld(3782)─┬─{mysqld}(3855) ├─{mysqld}(3856) ├─{mysqld}(3857) ├─{mysqld}(3858) ├─{mysqld}(3859) ├─{mysqld}(3860) ├─{mysqld}(3861) ├─{mysqld}(3862) ├─{mysqld}(3863) ├─{mysqld}(3864) ├─{mysqld}(3868)
显示进程所属的用户
[root@doit ~]# pstree -u systemd─┬─NetworkManager─┬─dhclient │ └─2*[{NetworkManager}] ├─acpid ├─agetty ├─auditd───{auditd} ├─chronyd(chrony) ├─crond ├─dbus-daemon(dbus) ├─haveged ├─httpd───7*[httpd(apache)] ├─irqbalance ├─master─┬─pickup(postfix) │ └─qmgr(postfix) ├─mysqld_safe(mysql)───mysqld───40*[{mysqld}]
pgrep:查找匹配条件的进程
pgrep命令可以查找匹配条件的进程号。
-u 显示指定用户的所有进程号
[root@cs6 ~]# pgrep crond #<==pgrep 命令可以看作ps命令和grep命合的结合,pgrep命令指定过滤crond字段,获取到crond进程的进程号。 1448
显示指定用户的所有进程号
[root@cs6 ~]# pgrep -u root 1 2 3 4 5 6 ...