javlib(javalibrary)

在linux中经常使用Pa auxf来查看进程信息,当一个进程是特定的时候就需要grep管道。如:ps auxf|grep java|grep -v grep,

在linux中经常使用Pa auxf来查看进程信息,当一个进程是特定的时候就需要grep管道。如:ps auxf|grep java|grep -v grep,即使这么长,能不能简化一下?当然,如果还是用ps命令,可以改成ps auxf|grep jav[a],这样就不用自己排除了。但是,感觉命令还是有点长。你能说得简单点吗?可以,可以用pgrep java,但此时只是pid。pgrep命令等效于以下命令:

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

参数描述:

选项描述-d定义了多个进程之间的分隔符,如果没有,则使用换行符。-P根据父进程的PID找出所有字进程的PID。-n表示如果这个程序中有多个进程在运行,那么只会找到最新的一个,也就是最后启动的那个。-o表示如果程序有多个进程在运行,那么只有最老的一个,也就是最先启动的那个(当有多个进程时,就是父进程PID)。-G后跟一个组id,该命令在搜索时只考虑组列表中的进程。-u后面是一组有效用户id(有效用户id)。该命令在搜索时只考虑有效用户列表中的进程。-U后跟一组真实用户id(真实用户id)。该命令在搜索时只考虑这个真实用户列表中的进程。-x表示进程名必须完全匹配,以上所有选项可以部分匹配。-l不仅会打印pid,还会打印进程名称。-f通常与-l一起使用来打印流程的参数。

用法示例

默认只显示PIDroot@361way:~# pgrep zabbix238023812382238323842385-l 同时显示PID和ProcessNameroot@361way:~# pgrep -l zabbix2380 zabbix_agentd2381 zabbix_agentd2382 zabbix_agentd2383 zabbix_agentd2384 zabbix_agentd2385 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 druiddev 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参数后,正常得到进程pidroot@361way:~# pgrep -f druid7438root@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 238023812382238323842385

相关命令pkill与pgrep基本相同。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/51598.html

发表回复

登录后才能评论