温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux下如何使用grep命令进行匹配

发布时间:2022-01-26 11:02:54 来源:亿速云 阅读:420 作者:小新 栏目:开发技术

小编给大家分享一下Linux下如何使用grep命令进行匹配,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

grep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

Linux下如何使用grep命令进行匹配

pgrep命令:

ps -eo pid,cmd | awk '{print $1,$2}' | grep KeyWord

参数说明:

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

显示详细信息

使用示例

默认只显示PID
root@361way:~# pgrep zabbix2380
2381
2382
2383
2384
2385
-l 同时显示PID和ProcessName
root@361way:~# pgrep -l zabbix2380 zabbix_agentd
2381 zabbix_agentd
2382 zabbix_agentd
2383 zabbix_agentd
2384 zabbix_agentd
2385 zabbix_agentd
-o 当匹配多个进程时,显示进程号最小的那个
root@361way:~# pgrep -l -o zabbix2380 zabbix_agentd
-n 当匹配多个进程时,显示进程号最大的那个
root@361way:~# pgrep -l -n zabbix2385 zabbix_agentd

这里需要特别指出的是pgrep默认只能匹配进程的前15个字符串,个体可以参看ubuntu问答上的说明,如下:

ps aux includes the full command line (path and parameters),while pgrep only looks at the first 15 characters of the executable's names

特殊参数

使用pgrep -f 可以进行进程全字符匹配,示例如下:

//使用ps命令可以正常grep到进程
root@361way:~# ps auxf|grep druidroot 25713 0.0 0.0 8108 940 pts/0 S+ 06:08 0:00 _ grep --color=auto druid
dev 7438 1.3 11.5 5524888 884988 ? Sl Jun16 672:54 java -server -Xmx4g -XX:MaxNewSize=1g -XX:+UseCompressedOops -XX:+UseParNewGC -Duser.timezone=UTC -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCMSInitiatingOccupancyOnly -XX:+PrintHeapAtGC -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -Djava.io.tmpdir=/data/tmpdata/java.io.tmpdata -Xloggc:/data/tmpdata/java.io.tmpdata/coordinator-gc.log -classpath lib/*:config/coordinator io.druid.cli.Main server coordinator
//pgrep的匹配结果为空
root@361way:~# pgrep druid//加上-f参数后,正常得到进程pid
root@361way:~# pgrep -f druid7438
root@361way:~# pgrep -f -l druid7438 java -server -Xmx4g -XX:MaxNewSize=1g -XX:+UseCompressedOops -XX:+UseParNewGC -Duser.timezone=UTC -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCMSInitiatingOccupancyOnly -XX:+PrintHeapAtGC -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -Djava.io.tmpdir=/data/tmpdata/java.io.tmpdata -Xloggc:/data/tmpdata/java.io.tmpdata/coordinator-gc.log -classpath lib/*:config/coordinator io.druid.cli.Main server coordinator

使用 -P 参数可以输出指定父进程的子进程,如:

root@361way:~# pgrep -P 23802381
2382
2383
2384
2385


以上是“Linux下如何使用grep命令进行匹配”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI