PIDが現在リッスンしているすべてのポートを一覧表示しようとしています。
プロセスに関するデータを取得するにはどうすればよいですか?
答え1
iproute2パッケージが利用可能ですss
(に似ていますnetstat
)。
ss -l -p -n | grep "pid=1234,"
または(以前のiproute2バージョンの場合):
ss -l -p -n | grep ",1234,"
1234をプログラムのPIDに置き換えます。
答え2
ツールの使い方がわかりませんiproute2
。しかし、回避策としてこれを試してみることができます。
lsof -Pan -p PID -i
あなたが探している情報を提供する必要があります。
出力
lsof -Pan -p 27808 -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 27808 apache 5u IPv6 112811294 0t0 TCP *:80 (LISTEN)
httpd 27808 apache 7u IPv6 112811298 0t0 TCP *:8443 (LISTEN)
httpd 27808 apache 9u IPv6 112811303 0t0 TCP *:443 (LISTEN)
ここでこのコマンドを受けました。ここしかし、すべての内容をメモに書き留めたので、正確なリンクはわかりません。しかし、そこでも見ることができます。
答え3
netstat
これを使用して、各リスニングプロセスのpidを見つけることができます。
netstat - ネットワーク接続、ルーティングテーブル、インターフェイス統計、仮面舞踏会接続、およびマルチキャストメンバーシップを印刷します。
-a、--all受信と非受信(TCPの場合は確立された接続を意味します)ソケットを表示します。タグ付けされていないインターフェイスを表示するには、--interfaces オプションを使用します。
--numeric, -n シンボル ホスト、ポート、またはユーザー名を解決する代わりに、数値アドレスを表示します。
-p, --program 各ソケットが属するプログラムのPIDと名前を表示します。
例は次のとおりです。
# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1507/rpcbind
tcp 0 0 0.0.0.0:51188 0.0.0.0:* LISTEN 1651/rpc.statd
tcp 0 0 0.0.0.0:1013 0.0.0.0:* LISTEN 1680/ypbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1975/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1763/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2081/master
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2119/mongod
tcp 0 48 172.16.33.73:22 172.16.127.110:51850 ESTABLISHED 25473/sshd
tcp 0 0 172.16.33.73:22 172.16.127.110:51214 ESTABLISHED 24699/sshd
tcp 0 0 :::111 :::* LISTEN 1507/rpcbind
tcp 0 0 :::9200 :::* LISTEN 1994/java
tcp 0 0 :::9300 :::* LISTEN 1994/java
tcp 0 0 :::22 :::* LISTEN 1975/sshd
tcp 0 0 ::1:631 :::* LISTEN 1763/cupsd
tcp 0 0 ::1:25 :::* LISTEN 2081/master
tcp 0 0 :::59162 :::* LISTEN 1651/rpc.statd
答え4
lsof
PIDを知らず、プログラム名だけを知っている場合は、他の方法があります。
lsof -Pa -p $(pgrep [programName]) -i