如果一个程序启动了很多进程,那怎么看所有的进程的PID呢,你可以ps -ef|grep 进程查看,但是有一个好的命令pgrep可以快速的查看

首先看一下pgrep的使用:

pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用

常用参数:

选项 说明
-d 定义多个进程之间的分隔符, 如果不定义则使用换行符。
-n 表示如果该程序有多个进程正在运行,则仅查找最新的,即最后启动的。
-o 表示如果该程序有多个进程正在运行,则仅查找最老的,即最先启动的。
-G 其后跟着一组group id,该命令在搜索时,仅考虑group列表中的进程。
-u 其后跟着一组有效用户ID(effetive user id),该命令在搜索时,仅考虑该effective user列表中的进程。
-U 其后跟着一组实际用户ID(real user id),该命令在搜索时,仅考虑该real user列表中的进程。
-x 表示进程的名字必须完全匹配, 以上的选项均可以部分匹配。
-l 将不仅打印pid,也打印进程名。
-f 一般与-l合用, 将打印进程的参数。

用的最多的是-l -n -o -d选项

如果直接使用pgrep squid,显示的是squid进程所有的pid

-l是是打印pid和进程名:

如查看squid的运行pid和进程名:pgrep -l  squid

-o是打印pid最小的进程数,从上图可以看出最小的pid是10734

pgrep -o  squid 

-n是打印pid最大的进程数

pgrep -n squid

-d是改变输出的换行符,默认是回车,如果想用冒号分割,那

pgrep -d: squid

既然pgrep可以显示出查找进程名所有的pid,那就可以批量去kill掉进程

pgrep squid|xargs kill -9

pkill squid就相当于pgrep squid|xargs kill -9