"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

관련 정보