Usando "ps -C java -o pid, usuário, cmd" Posso reduzir a saída de cmd?

2

Estou tentando reduzir esse comando para as informações essenciais de que preciso.

No comando, o cmd volta com esta saída ...

/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

Gostaria de obter apenas o -Dwd.instance e -Dcom.sun.management.jmxremote.port

Existe algo que eu possa adicionar ao comando para apenas puxar essas partes do cmd?

Editar * Observação: ainda gostaria de ver o pid e as respostas dos usuários.

Obrigado!

    
por user91462 14.11.2014 / 03:27

2 respostas

0

canalize o resultado até grep -o -- '-Dwd\.Instance=[^ ]*' (ou mais provavelmente use $() para executar a primeira metade do tubo apenas uma vez).

    
por 14.11.2014 / 05:08
0

Você pode retirar os cabeçalhos da saída ps , usando a sintaxe = no final dos nomes das colunas, e passar os resultados por awk , onde você solicita a localização das posições desses dois parâmetros. Depois de encontrado, salve os dados correspondentes em algumas variáveis temporárias e, em seguida, imprima os campos desejados:

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
}' 

A função match procura pelas strings que você identificou, seguidas por um sinal de igual, seguido por "um ou mais caracteres que não estão em branco", a fim de captar os valores dos parâmetros também.

Dada a sua entrada de amostra (falsificada para fornecer um campo PID e usuário), a saída é:

4242 www -Dwd.instance=boxect0401a -Dcom.sun.management.jmxremote.port=56517
    
por 12.04.2018 / 03:03