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

一、Linux命令pgrep简单介绍

pgrep是linux中常用的通过程序名称来查询进程的工具,一般是用来判断程序是否正在运行及查找正在运行进程的PID信息。通过pgrep命令,可以只指定进程的一部分名称从运行进程队列中进行查看进程的PID信息,但只输出PID号,不便于理解。可以结合‘-l’选项在显示PID的同时也显示这个进程的名称。

1、用法:

pgrep [options]

2、主要选项

-l,--list-name:列出进程名称和进程ID

-o,--oldest:仅显示最小(最早启动的进程)进程号

-n,--newest:仅显示最大(最新启动的进程)进程号

-u,--euid euid:仅列出有效用户相关的进程ID号

-U,- uid:仅匹配列出实际用户ID的进程

-P(大写),--parent ppid:仅列出父进程ID的子进程号

-x,--exact(精确):与进程中的命令名称精确匹配

-d,--delimiter(分隔符) :指定每个进程ID间的分隔符(默认为换行符)

-a,--list-full:列表显示进程的PID和进程所对应的程序以及运行时所带的参数。

-t,--terminal 【tty1】|【pts/0】:只显示指定控制终端下列出的进程ID。指定终端名称时没有“/ dev /”前缀。

不常用

-c:列出指定进程的个数。

-v,--inverse(反向):反向匹配。匹配所有的进程除了符合匹配条件的。这个选项通常用在pgrep的上下文中。

二、pgrep 命令常见用法

下面举几个例子验证各选项的用法,如下:

1、查看系统日志程序rsyslogd的PID信息

如果记不住系统日志程序的名称,可以只输入程序命令名称的一部分,pgrep命令可以根据指定进程的一部分名称从运行进程队列中进行查询,并将所有包含的指定部分的进程名称信息的PID都列出来。如下图:

3f9e7c04b18dd57135d822681d09c326.png

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

64a806ca358a621b56901be688a32bff.png

2、显示祖宗进程(Linux系统第一个启动的进程)的ID号和进程名

在Linux操作系统开机引导过程中,在内核加载完成后,内核会首先将第一个程序systemd加载到内存运行(在centos 6中是init),并由它完成一系列系统初始化的过程。所以,systemd进程对应的PID为1。

需要用到‘-o’ 选项,如下

e193b7bf82c5cd5e2d7f45938d48e56b.png

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

例如:

显示远程服务sshd的最小进程号

617358fda64ce4d0c314e1759c14418e.png

3、显示最近(最大的)启动的进程的ID号和进程名

与‘-o’选项功能相反,‘-n’ 选项功能是查询最新启动的进程ID,用法如下

86c39a62e343ee1a0d00e162a1285e72.png

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

例如:

显示远程服务ssh的最大进程号

71dbe769c24543c8e4b489ffeb4c36a3.png

4、根据用户名列出进程ID,可以使用‘-u’选项来查看

【1】列出所有跟tom用户有关的进程ID

483057e8959a5cedf6be4c1b0e920f89.png

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

78745458a971efbf2aad762fb42c8904.png

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

5、查询web服务进程下的子进程PID信息

5ff50d0ae331c1582d102355d3739e0d.png

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

6、精确查询系统日志服务进程名称PID信息,可以使用‘-x’选项

04f00a803b88ffef519cfd91f362ea59.png

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

7、分别以空格和分号输出Apache服务的进程ID号。

1233a65a73d2dc19f34ddf858519704f.png

上面几个示例都是纵向输出每个进程的ID号,即每个进程ID间的分隔符默认为换行符,若想横向显示需要‘-d’选项,并指定输出分割符,除了逗号外,使用其他分割符,需将分隔符放入引号内。

8、查询ping进程所对应的程序以及运行时所带的参数。

1c8ce62ddd24a95ab9c4303eb499449d.png

‘-a’选项功能匹配的是cmd字段,不仅可以显示执行命令的PID号,还可以完整的显示进程所对应的程序以及运行时所带的参数,而‘-l’仅显示进程的简称,‘-a’显示的字段内容要比使用‘-l’选项多一些。

9、查询第4个虚拟网络中端下的进程ID信息(从0开始),可以用‘-t’选项指定开启进程的终端

f4dcf252f46f4d21d6ce482f699d7e49.png

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

以下两项例子做为了解即可

10、查看httpd服务启动的进程数量

a7fdd30933e9c2d88685b6ea75a71d0a.png

11、显示所有跟root用户无关的所有进程

[root@centos7 ~]# pgrep -avu root

a39b4f6e78c3085d8f769d58bdb32b45.png

综合使用:仅查询httpd进程的子进程详细信息(不包含父进程)

[root@centos7 ~]# ps -fp `pgrep -P $(pgrep -o httpd)`

956c3619cdee18fd4a18bcad4df8b707.png

以上是pgrep命令基本选项的使用,pgrep命令通常会和kill或pkill结合起来使用,由pgrep命令找出有问题的进程PID,由kill或pkill来杀掉有问题的进程是很容易的。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值