从ps -ef解析数据

时间:2016-10-28 16:26:29

标签: bash shell awk

我的输出如下:

ps -ef | grep logstash
kafka     2832     1  1 Oct06 ?        08:18:36 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xss2048k -Djffi.boot.library.path=/apps/COMPASSLOG_DEV/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=/apps/COMPASSLOG_DEV/logstash-2.2.2/heapdump.hprof -Xbootclasspath/a:/apps/COMPASSLOG_DEV/logstash-2.2.2/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/apps/COMPASSLOG_DEV/logstash-2.2.2/vendor/jruby -Djruby.lib=/apps/COMPASSLOG_DEV/logstash-2.2.2/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /apps/COMPASSLOG_DEV/logstash-2.2.2/lib/bootstrap/environment.rb logstash/runner.rb agent -f /apps/COMPASSLOG_DEV/COMPASSLOG_DEV.config

我使用下面的脚本使其看起来干净:

ps -ef | grep logstash | grep -v grep | grep -v nohup|awk '{print $38}'|awk -F/ '{print $3}'|awk -F_ '{print "Logstash is running for: "$1$2}'

给我输出:

Logstash is running for: COMPASSLOGDEV

如何添加其运行的端口号,如下所示?

Logstash is running for: COMPASSLOGDEV on port number 2832
                                       ^^^^^^^^^^^^^^^^^^^ add this

1 个答案:

答案 0 :(得分:0)

ps -ef | grep logstash | awk -F" " '{print "Logstash is running for " substr($NF,7,10) substr($NF, 18,3)" on port number " $2 }' 

使用空格作为分隔符:

$2是端口2832

substr($NF,7, 10)是COMPASSSLOG

substr($NF, 18, 3是DEV

上面得到了你想要的东西,但正如@Farhad所说。 2832 IS除端口号以外的PID