使用“ps -C java -o pid,user,cmd”可以减少cmd的输出吗?

使用“ps -C java -o pid,user,cmd”可以减少cmd的输出吗?

我试图将此命令简化为我需要的基本信息。

在命令 cmd 中返回此输出...

/usr/local/jre1.7.0_51/bin/java -Dwd.tag=boxect -Dwd.instance=boxect0401a -classpath /usr/local/apache-tomcat-7.0.52/bin/boboxecttrap.jar:/usr/local/apache-tomcat-7.0.52/lib/*:/data/sou/boxect0401a/lib/*:/data/sou/boxect0401a -Dwd.home=/data/sou/boxect0401a -Dwd.service.type=boxect -Dfile.encoding=utf-8 -Dlog4j.configuration=file:/data/sou/boxect0401a/tomcat/conf/log4j.properties -Djava.util.logging.config.file=/data/sou/boxect0401a/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcatalina.home=/usr/local/apache-tomcat-7.0.52 -Dcatalina.base=/data/sou/boxect0401a/tomcat -Djava.io.tmpdir=/data/sou/boxect0401a/temp -Duser.timezone=America/New_York -Duser.country=US -Duser.language=en -Duser.variant= -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=56517 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Doms.base.config=/data/sou/boxect0401a/tomcat/conf/catalina.properties -Xms150g -Xmx150g -XX:MaxPermSize=256m -XX:PermSize=256m -XX:+UseParallelOldGC -XX:HeapMaximumCompactionInterval=10000 -XX:HeapFirstMaximumCompactionCount=10000 -XX:ThreadStackSize=1280 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:InitialCodeCacheSize=128m -XX:ReservedCodeCacheSize=128m -XX:ErrorFile=/data/sou/boxect0401a/logs/hs_err_%p.log -verbose:gc -Xloggc:/data/sou/boxect0401a/logs/gc.boxect0401a.1415434937.log -Dtrack.instances.accessed=true -Dslave.instanceid= -Dslave.authtoken= -Dslave.tenant= -Dslave.type= -Dslave.target.type= -Drequest.track.id= -Dwd.confidence.level=prod -Dwd.environmentId=PROD org.apache.catalina.startup.Boboxecttrap start

我只想获取 -Dwd.instance 和 -Dcom.sun.management.jmxremote.port

我可以在命令中添加一些内容以仅提取 cmd 的这些部分吗?

编辑* 注意:我仍然想查看 pid 和用户响应。

谢谢!

答案1

通过管道传输结果grep -o -- '-Dwd\.Instance=[^ ]*'(或者更可能用于$()仅运行管道的前半部分一次)。

答案2

ps您可以使用=列名末尾的语法从输出中去掉标题,然后将结果传递到awk您要求它查找这两个参数的位置的位置。找到后,将匹配的数据保存到一些临时变量中,然后在最后打印所需的字段:

ps -C apache2 -o pid=,user=,cmd= | awk '{
  match($0, "-Dwd.instance=[^ ]+");
  a=substr($0,RSTART,RLENGTH);
  match($0, "-Dcom.sun.management.jmxremote.port=[^ ]+");
  b=substr($0,RSTART,RLENGTH);
  print $1, $2, a, b
}' 

match函数查找您标识的那些字符串,后跟等号,后跟“一个或多个非空白字符”,以便也获取参数值。

给定您的示例输入(伪造以提供 PID 和用户字段),输出为:

4242 www -Dwd.instance=boxect0401a -Dcom.sun.management.jmxremote.port=56517

相关内容