awkコマンドは、プロセス名を取得するために、私は以下のようにシェルスクリプトでawkコマンドを使用してプロセス名を取得しようとしています
擬似コード
app=`ssh [email protected] ps -ef | grep $procid | grep -v "grep" | awk -F ' ' '{print $NF}' | sed 's/ //' | sed 's/\.jar//'`
サンプルログファイルがあるとして
tomcat 4818 1 1 Jun15 ? 02:46:09 /usr/local/integration-banana.jar --server.port=9023
tomcat 10283 1 0 2016 ? 1-20:19:20 /usr/local/integration-mango.jar
tomcat 10655 1 0 2016 ? 1-21:29:32 /usr/local/integration-grapes.jar
tomcat 4062 1 1 Mar16 ? 1-01:47:37 /usr/local/integration-kiwi.jar --server.port=9012
以下
所望の出力は
banana
mango
grapes
kiwi
です
しかし、この場合には、私は取得しています
--server.port
mango
grapes
--server.port
私の理解では、
NF
は
awk
コマンドプリント最後の列に使用されますが、このログファイルから、私は出ては
--server.port
アドレスを持つプロセス名を取得するだけでなく
NF
を使用する必要があります
。 これを助けてください。
をしない '$のprocid'何ですか?それはprocessIdですか?またはids?その値の例を示してください。 – Kent
その出力からどのように出力が得られるのかわかりません。各行の '/ usr/local/integration-'部分はどこに行きますか? –
プロセスIDです。残りのコードを入れてください。 ssh tomcat @ server netstat -tulpn | grep java> /home/arun/stat.out javaprocの 'cat/home/arun/stat.out'にあります。 do procid = 'echo $ javaproc | awk -F '' {print $ NF} '| awk -F '/' '{print $ 1}' ' port =' echo $ javaproc | awk -F ':' '{print $ 2}' | awk -F '' '{print $ 1}' ' hasserverport = 'ps -ef | grep $ procid | grep -v "grep" | "$ hasserverport -gt 0"; then \t \t app = 'ssh tomcat @ server ps -ef | grep -c" server \ .port "'の場合は、 grep $ procid | grep -v "grep" | awk -F '' {print $ NF} '| sedの//'| sed 's/\。jar //' ' – Arun