我想在shell腳本中使用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
我的理解是awk
命令輸出的最後一列用於NF
,但是從這個日誌文件我需要使用NF
以及具有--server.port
地址出去找進程名。 你能幫忙嗎?
是什麼'$ procid'?它是processId嗎?或ID?顯示它的示例值。 – Kent
我不明白你是如何得到那個輸入的輸出,每行的'/ usr/local/integration-'部分在哪裏? –
它是進程id.Puting其餘的代碼 ssh tomcat @ server netstat -tulpn |對於'cat/home/arun/stat.out'中的javaproc,grep java> /home/arun/stat.out ;做 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」| grep -c「server \ .port」' if [$ hasserverport -gt 0];然後 \t \t app ='ssh tomcat @ server ps -ef | grep $ procid | grep -v「grep」| awk -F'''{print $ NF}'| sed's///'| sed's/\。jar //'' – Arun