如果一个程序启动了很多进程,那怎么看所有的进程的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