您的位置:首页 > 运维架构 > Linux

查看进程PID专用工具-------pgrep

2017-11-14 23:51 337 查看
一、Linux命令pgrep简单介绍 pgrep是linux中常用的通过程序名称来查询进程的工具,一般是用来判断程序是否正在运行及查找正在运行进程的PID信息。通过pgrep命令,可以只指定进程的一部分名称从运行进程队列中进行查看进程的PID信息,但只输出PID号,不便于理解。可以结合‘-l’选项在显示PID的同时也显示这个进程的名称。1、用法: pgrep [options] <pattern>2、主要选项 -l,--list-name:列出进程名称和进程ID-o,--oldest:仅显示最小(最早启动的进程)进程号-n,--newest:仅显示最大(最新启动的进程)进程号-u,--euid euid:仅列出有效用户相关的进程ID号-U,- uid:仅匹配列出实际用户ID的进程-P(大写),--parent ppid:仅列出父进程ID的子进程号-x,--exact(精确):与进程中的命令名称精确匹配-d,--delimiter(分隔符) <string>:指定每个进程ID间的分隔符(默认为换行符)-a,--list-full:列表显示进程的PID和进程所对应的程序以及运行时所带的参数。-t,--terminal 【tty1】|【pts/0】:只显示指定控制终端下列出的进程ID。指定终端名称时没有“/ dev /”前缀。不常用-c:列出指定进程的个数。-v,--inverse(反向):反向匹配。匹配所有的进程除了符合匹配条件的。这个选项通常用在pgrep的上下文中。二、pgrep 命令常见用法下面举几个例子验证各选项的用法,如下:1、查看系统日志程序rsyslogd的PID信息如果记不住系统日志程序的名称,可以只输入程序命令名称的一部分,pgrep命令可以根据指定进程的一部分名称从运行进程队列中进行查询,并将所有包含的指定部分的进程名称信息的PID都列出来。如下图:

结合‘-l’选项显示PID的同时也显示这个进程的命令名称。

2、显示祖宗进程(Linux系统第一个启动的进程)的ID号和进程名在Linux操作系统开机引导过程中,在内核加载完成后,内核会首先将第一个程序systemd加载到内存运行(在centos 6中是init),并由它完成一系列系统初始化的过程。所以,systemd进程对应的PID为1。需要用到‘-o’ 选项,如下

当某个服务是多进程的服务时,‘-o’选项后面也可以指定此服务名称来显示最小进程号,例如:显示远程服务sshd的最小进程号

3、显示最近(最大的)启动的进程的ID号和进程名与‘-o’选项功能相反,‘-n’ 选项功能是查询最新启动的进程ID,用法如下

‘-n’选项后面也可以指定服务名称,来显示最大进程号。例如:显示远程服务ssh的最大进程号

4、根据用户名列出进程ID,可以使用‘-u’选项来查看【1】列出所有跟tom用户有关的进程ID

【2】仅查看用户tom启动的top服务进程ID和名称

也可以使用‘-U’选项查询有关tom用户的进程信息,用法跟‘-u’选项相同,不做过多介绍。5、查询web服务进程下的子进程PID信息

如上图,一般来说某个服务的父进程的PID总是小于其子进程的PID,‘-P’选项后面跟父进程PID(不是进程名称),例如,如果不知道httpd服务父进程的PID怎么办?可以结合前面的‘-o’选项查询httpd服务的最小进程号。6、精确查询系统日志服务进程名称PID信息,可以使用‘-x’选项

看见了吧,需要输入完整的进程名称才能从cmd字段列表中进行匹配显示PID信息,是因为-x选项功能进行精确匹配输入的进程名称,而且同时只能查询一个程序ID,一般可以用在脚本里面。7、分别以空格和分号输出Apache服务的进程ID号。

上面几个示例都是纵向输出每个进程的ID号,即每个进程ID间的分隔符默认为换行符,若想横向显示需要‘-d’选项,并指定输出分割符,除了逗号外,使用其他分割符,需将分隔符放入引号内。8、查询ping进程所对应的程序以及运行时所带的参数。

‘-a’选项功能匹配的是cmd字段,不仅可以显示执行命令的PID号,还可以完整的显示进程所对应的程序以及运行时所带的参数,而‘-l’仅显示进程的简称,‘-a’显示的字段内容要比使用‘-l’选项多一些。9、查询第4个虚拟网络中端下的进程ID信息(从0开始),可以用‘-t’选项指定开启进程的终端

可以看到,在第4虚拟终端下,运行了两个进程,一个是提供了用户与内核进行交互操作的一种接口----命令解释器bash,另一个是正在执行yum安装程序的进程。若想了解其他用户在Linux上当前执行什么操作,通过-t选项可以查询指定中端下的子孙进程ID及执行命令。以下两项例子做为了解即可10、查看httpd服务启动的进程数量

11、显示所有跟root用户无关的所有进程[root@centos7 ~]# pgrep -avu root

综合使用:仅查询httpd进程的子进程详细信息(不包含父进程)[root@centos7 ~]# ps -fp `pgrep -P $(pgrep -o httpd)`

以上是pgrep命令基本选项的使用,pgrep命令通常会和kill或pkill结合起来使用,由pgrep命令找出有问题的进程PID,由kill或pkill来杀掉有问题的进程是很容易的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux pgrep