[英]Combine output of Netstat and PS - linux
我想結合以下命令的輸出:
-netstat
[root]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:32552 0.0.0.0:* LISTEN
151634/java
-PS
[root]# ps -eo pid,cmd | grep 151634
130485 grep --color=auto 151634
151634 java -classpath
我想結合以下2條命令,並具有以下輸出(txt文件):
PORT PID CMD
123 333 java/etc
234 444 java/etcetc
345 555 java/etcetcetc
我做了以下事情:
netstat -nltp | awk '{print $4}' | sed -e 's/.*://'
這將從netstat -nltp輸出打印PORT
for i in `netstat -nltp | awk {'print $7}' | awk -F '/' {'print $1'} | uniq` ; do ps -eo pid,cmd | grep $(echo $i | sed "s/^\(.\)/[\1]/g") ; done
這將從netstat -nltp命令獲取PID,然后從PS命令顯示PID和CMD(並且不包括顯示grep --color = auto結果
非常感謝你!
LE:我已經刪除了輸出html以避免混淆。 這只是有關其外觀的一個示例。
非常感謝JUSHJUSH,
我在這里寫了我的回復,因為評論回復的時間太長了。
我還使用該FOR更新了腳本,並且該腳本可以正常工作,但是,該腳本似乎無法獲得正確的輸出。
我會在下面解釋
如果我有以下netstat -nltp輸出
tcp 0 0 127.0.0.1:32552 0.0.0.0:* LISTEN 151634/java tcp 0 0 10.77.66.33:8081 0.0.0.0:* LISTEN 151634/java tcp 0 0 0.0.0.0:7070 0.0.0.0:* LISTEN 151634/java tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN 151634/java tcp 0 0 0.0.0.0:20100 0.0.0.0:* LISTEN 151634/java tcp 0 0 0.0.0.0:20101 0.0.0.0:* LISTEN 151634/java tcp 0 0 0.0.0.0:20102 0.0.0.0:* LISTEN 151634/java
並且PID = 151634的CMD為java -classpath /opt/application/nifi-1.6.0/./conf:/opt/application/nifi-1.6.0/./lib/jetty-schemas-3.1.jar:
該腳本給出以下輸出: PORT PID CMD 32552 151634 java -classpath /opt/application/nifi-1.6.0/./conf:/opt/application/nifi-1.6.0/./lib/jetty-schemas-3.1.jar: 32552 151634 java -classpath /opt/application/nifi-1.6.0/./conf:/opt/application/nifi-1.6.0/./lib/jetty-schemas-3.1.jar: 32552 151634 java -classpath /opt/application/nifi-1.6.0/./conf:/opt/application/nifi-1.6.0/./lib/jetty-schemas-3.1.jar: 32552 151634 java -classpath /opt/application/nifi-1.6.0/./conf:/opt/application/nifi-1.6.0/./lib/jetty-schemas-3.1.jar: 32552 151634 java -classpath /opt/application/nifi-1.6.0/./conf:/opt/application/nifi-1.6.0/./lib/jetty-schemas-3.1.jar: 32552 151634 java -classpath /opt/application/nifi-1.6.0/./conf:/opt/application/nifi-1.6.0/./lib/jetty-schemas-3.1.jar: 32552 151634 java -classpath /opt/application/nifi-1.6.0/./conf:/opt/application/nifi-1.6.0/./lib/jetty-schemas-3.1.jar:
輸出應為PORT PID CMD 32552 151634 CMD from above 8081 151634 CMD from above 7070 151634 CMD from above 9090 151634 CMD from above 20100 151634 CMD from above 20101 151634 CMD from above 20102 151634 CMD from above
或者,另一個例子:
如果我有以下netstat -nltp輸出
tcp 0 0 127.0.0.1:3030 0.0.0.0:* LISTEN 88284/ruby tcp 0 0 127.0.0.1:3031 0.0.0.0:* LISTEN 88284/ruby
並且PID = 88284的CMD為/opt/sensu/embedded/bin/ruby /opt/sensu/bin/sensu-client -c /etc/sensu/config.json -d /etc/sensu/conf.d -e /etc/sensu/extensions -p /var/run/sensu/sensu-client.pid -l /var/log/sensu/sensu-client.log -L warn
該腳本提供以下輸出: PORT PID CMD 3030 88284 /opt/sensu/embedded/bin/ruby /opt/sensu/bin/sensu-client -c /etc/sensu/config.json -d /etc/sensu/conf.d -e /etc/sensu/extensions -p /var/run/sensu/sensu-client.pid -l /var/log/sensu/sensu-client.log -L warn 3030 88284 /opt/sensu/embedded/bin/ruby /opt/sensu/bin/sensu-client -c /etc/sensu/config.json -d /etc/sensu/conf.d -e /etc/sensu/extensions -p /var/run/sensu/sensu-client.pid -l /var/log/sensu/sensu-client.log -L warn
輸出應該是PORT PID CMD 3030 88284 CMD from above 3031 88284 CMD from above
非常感謝您的幫助和耐心!
好的,因此,我設法使腳本解決了所有重復出現的問題,等等。在其他人需要的情況下,您可以在下面找到更新的腳本。 謝謝! :)
netstat -ntlp | sed 1,2d > /tmp/output_netstat.txt
echo PORT$'\t'PID$'\t'NAME
for port in $(cat /tmp/output_netstat.txt | awk '{print $4 " " $7}' | sed -e 's/.*://' | awk '{print $1}' | uniq)
do
pid=$(cat /tmp/output_netstat.txt | grep -w "$port" | awk '{print $7}' | cut -d ' ' -f 7 | cut -d '/' -f 1 | uniq )
ps_name=$(cat /tmp/output_netstat.txt | awk '{print $4 " " $7}' | sed -e 's/.*://' | sed 's/\// /g' | awk '{print $3}')
ps_name_outputed=$(ps -ef | grep "$pid" | grep "$ps_name" | grep -v grep |tr -s ' '| sed 's/^[^0-9]*//g' | head -1 | cut -f2- -d/)
echo "$port"" ""$pid"" ""$ps_name_outputed"
done
rm -rf /tmp/output_netstat.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.