実行できますnetstat -atulpn | grep Java
すべてのJavaプロセスとそれに付随するポートを見つけることは素晴らしいことですが、プロセスの完全な実行引数も表示したいと思います。これが可能であるとは思わないこれまでに調べたすべてのことからnetstat
なので、netstat
の出力を処理するスクリプトを作成してから、pidをps
に渡す必要があると考えていました。次に、出力をプリティファイして、ip + portと完全なコマンドラインを表示します。
これを行うためのより良い方法はありますか、それともこれが唯一のオプションについてですか?
ss -lnptuは、ps-pの呼び出しでawkにパイプされます。私はモバイルデバイスを使用しているので、現時点で完全な例を入力するのは少し難しいです。
リスニングソケット:
ss -lnptu | awk 'NR>1 { split($7,p,","); printf "Listen: "$5 " Command: "; system("ps --no-headers -o args p "p[2]); }'
すべてのソケット(TIME_WAITなどにプロセス情報がないソケットのため、追加のフィルタリングが必要になる可能性があります):
ss -anptu state listening state established state connected state unconnected | grep -v TIME_WAIT | awk 'NR>1 { split($7,p,","); printf "Listen: "$5 " Command: "; system("ps --no-headers -o args p "p[2]); }'
Mark Sturgillの回答をそのまま使用すると、Ubuntu16.04のps
からエラーが発生していました。それを機能させるためにわずかな変更が必要でした:基本的に、数値PIDをsplit
が返す結合形式(例:pid=1306 -> 1306
)からさらに分離するために追加のss
を追加しました。また、psに完全な引数を出力させるために-ww
フラグを追加しました。
ss -lnptu | awk 'NR>1 { split($7,p,","); split(p[2],pid,"="); printf "Listen: "$5 " Command: "; system("ps --no-headers -ww -o args p "pid[2]); }'
@ ylluminate、CentOSの場合はss -lnptu | awk 'NR>1 { split($6,p,","); printf "Listen: "$4 " Command: "; system("ps --no-headers -o args p "p[2]); }'
に変更します