2016-10-29 3 views
0

Dies ist Ausgabe meiner ps -efReinigung ps -ef Ausgang

$ ps -ef | grep logstash 
hdfs  72561  1 58 10:08 pts/5 00:59:35 /usr/java/default/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xss2048k -Djffi.boot.library.path=/grid01/es/CF_STAGE_ES/logstash-2.2.2/vendor/jruby/lib/jni -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/grid01/es/CF_STAGE_ES/logstash-2.2.2/heapdump.hprof -Xbootclasspath/a:/grid01/es/CF_STAGE_ES/logstash-2.2.2/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/grid01/es/CF_STAGE_ES/logstash-2.2.2/vendor/jruby -Djruby.lib=/grid01/es/CF_STAGE_ES/logstash-2.2.2/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /grid01/es/CF_STAGE_ES/logstash-2.2.2/lib/bootstrap/environment.rb logstash/runner.rb agent -f /grid01/es/CF_STAGE_ES/CF_STAGE.es.config 
hdfs  96424  1 38 10:27 pts/5 00:31:41 /usr/java/default/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xss2048k -Djffi.boot.library.path=/grid01/es/CSL_STAGE/logstash-2.2.2/vendor/jruby/lib/jni -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/grid01/es/CSL_STAGE/logstash-2.2.2/heapdump.hprof -Xbootclasspath/a:/grid01/es/CSL_STAGE/logstash-2.2.2/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/grid01/es/CSL_STAGE/logstash-2.2.2/vendor/jruby -Djruby.lib=/grid01/es/CSL_STAGE/logstash-2.2.2/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /grid01/es/CSL_STAGE/logstash-2.2.2/lib/bootstrap/environment.rb logstash/runner.rb agent -f /grid01/es/CSL_STAGE/CSL_STAGE.es.config 
hdfs  136554  1 10 10:57 pts/5 00:05:36 /usr/java/default/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xss2048k -Djffi.boot.library.path=/grid01/es/SENSE_STAGE/logstash-2.2.2/vendor/jruby/lib/jni -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/grid01/es/SENSE_STAGE/logstash-2.2.2/heapdump.hprof -Xbootclasspath/a:/grid01/es/SENSE_STAGE/logstash-2.2.2/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/grid01/es/SENSE_STAGE/logstash-2.2.2/vendor/jruby -Djruby.lib=/grid01/es/SENSE_STAGE/logstash-2.2.2/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /grid01/es/SENSE_STAGE/logstash-2.2.2/lib/bootstrap/environment.rb logstash/runner.rb agent -f /grid01/es/SENSE_STAGE/SENSE_STAGE.es.config  
hdfs  203513  1 82 11:37 pts/5 00:10:08 /usr/java/default/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xss2048k -Djffi.boot.library.path=/grid01/es/SMARTSCAN_STAGE/logstash-2.2.2/vendor/jruby/lib/jni -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/grid01/es/SMARTSCAN_STAGE/logstash-2.2.2/heapdump.hprof -Xbootclasspath/a:/grid01/es/SMARTSCAN_STAGE/logstash-2.2.2/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/grid01/es/SMARTSCAN_STAGE/logstash-2.2.2/vendor/jruby -Djruby.lib=/grid01/es/SMARTSCAN_STAGE/logstash-2.2.2/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /grid01/es/SMARTSCAN_STAGE/logstash-2.2.2/lib/bootstrap/environment.rb logstash/runner.rb agent -f /grid01/es/SMARTSCAN_STAGE/SMARTSCAN_STAGE.es.config 
hdfs  602508  1 10 Aug25 ?  6-18:21:48 /usr/java/default/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xss2048k -Djffi.boot.library.path=/grid01/es/logstash-2.2.2/vendor/jruby/lib/jni -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/grid01/es/logstash-2.2.2/heapdump.hprof -Xbootclasspath/a:/grid01/es/logstash-2.2.2/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/grid01/es/logstash-2.2.2/vendor/jruby -Djruby.lib=/grid01/es/logstash-2.2.2/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /grid01/es/logstash-2.2.2/lib/bootstrap/environment.rb logstash/runner.rb agent -f /grid01/es/logstash-2.2.2/AERO_STAGE_es.config 

Ich versuche, die zweite Spalte und die letzte Komponente des Weges nach der -f Option in jedem Prozess der Befehlszeile zu extrahieren.

Ich verwende den Code es aufzuräumen:

ps -ef | grep logstash | grep -v grep| awk -F" " '{print "Logstash is running for " substr($NF,7,10) " & PID number is " $2 }' 

, die wie folgt aussieht:

Logstash is running for S/CF_STAGE.es.config & PID number is 72561 
Logstash is running for CSL_STAGE.es.config & PID number is 96424 
Logstash is running for E/SENSE_STAGE.es.config & PID is 
Logstash is running for STAGE/SMARTSCAN_STAGE.es.co & PID number is 203513 
Logstash is running for .2.2/AERO_STAGE_es.config & PID number is 602508 

Nun das Problem ist, ich will es nur so aussehen (nur der Name des Themas & PID):

Logstash is running for CF_STAGE & PID number is 72561 
Logstash is running for CSL_STAGE & PID number is 96424 
Logstash is running for SENSE_STAGE & PID number 136554 
Logstash is running for SMARTSCAN_STAGE & PID number is 203513 
Logstash is running for AERO_STAGE & PID number is 602508 
+1

[HFG] (http://stackoverflow.com/q/40309305/3776858)? – Cyrus

+0

Offensichtlich wollen Sie 'substr ($ NF, 7,10)' durch etwas ersetzen, das Dinge fester Länge vom Ende des Feldes entfernt, anstatt einen Offset von Anfang an fest zu codieren. – tripleee

+0

Siehe auch [nutzlose Verwendung von 'grep'] (http://www.iki.fi/era/unix/award.html#grep) – tripleee

Antwort

0

Verwenden split()

ps -ef | grep logstash | grep -v grep | awk -F" " '{split($NF, a, "/"); split(a[5], b, "."); print "Logstash is running for " b[1] " & PID number is " $2 }' 
+0

das funktioniert einfach super! – joker

0

Wenn Sie immer erhalten möchten Befreien Sie sich von den gleichen Textblöcke, dann können Sie Ihre Ausgabe so weit in ein paar sed gerade Rohr:

ps -ef | grep logstash | grep -v grep | 
awk -F" " '{print "Logstash is running for " substr($NF,7,10) " & PID number is " $2 }' | 
sed 's/S\///g' | sed 's/\.es\.config//g' | sed 's/E\///g' | 
sed 's/STAGE\///g' | sed 's/\.es\.co//g' | sed 's/\.2\.2//g' 

ich vermisse ich nicht etwas Hoffnung. Der allgemeine Befehl ist

sed 's/SUBSTITUTE_THIS/WITH_THIS/g' 

und die vielen Schrägstriche sind nur bestimmte Symbole zu entkommen.

0

Mit function ist es möglich. Sie können mit diesem Befehl versuchen.

ps -ef | grep logstash | grep -v grep| awk -F" " 'function subst(str){ 
    split(str, arr, "/") ; 
    split(arr[5], arr2, ".") ; 
    return arr2[1] } {print "Logstash is running for " subst($NF) " & PID number is " $2 }' 

dadurch erhalten Sie die richtige Antwort wie folgt.

Logstash is running for CF_STAGE & PID number is 72561 
Logstash is running for CSL_STAGE & PID number is 96424 
Logstash is running for SENSE_STAGE & PID number is 136554 
Logstash is running for SMARTSCAN_STAGE & PID number is 203513 
Logstash is running for AERO_STAGE_es & PID number is 602508 
+0

das funktioniert auch! – joker