lsofのインストールと使用
lsof
は、すべてのアクティブなプロセスに属するすべての開いているファイルを一覧表示するコマンドラインユーティリティです。
Linuxにインストールするには、使用するディストリビューションの種類に応じて次のコマンドを使用します。
Debian、Ubuntuの場合:
sudo apt install lsof
CentOSでは、RHEL:
sudo yum install lsof
CentOS 8、RHEL 8、Fedoraなどの新しいバージョン
sudo dnf install lsof
どのプロセスがどのポートで実行されているかを確認するには、ポート番号を指定するだけです。
sudo lsof -i :3000
サンプル出力:
# lsof -i :3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
grafana-s 264023 grafana 10u IPv6 2887779 0t0 TCP *:hbci (LISTEN)
詳細については、manページを参照してください。
man lsof
netstatのインストールと使用
Netstatは、ネットワーク接続、ルーティングテーブル、インターフェイス統計、マスカレード接続、およびマルチキャストメンバーシップを印刷するために使用されるコマンドラインユーティリティです。
Netstatは、ほとんどのLinuxディストリビューションのデフォルトのリポジトリで利用できます。
Linuxとそのバリアントにインストールするには、次のようにします。
CentOSでは、RHEL:
sudo yum install net-tools
# On Fedora, RHEL 8 and Centos8
sudo dnf install net-tools
Debian、Ubuntuの場合:
sudo apt install net-tools
次のコマンドを使用して、どのサービスがどのポートでリッスンしているかを確認します。
sudo netstat -tulpn
サンプル出力:
# sudo netstat -tulpn
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:8088 0.0.0.0:* LISTEN 538847/influxd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 900/nginx: master p
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:7088 0.0.0.0:* LISTEN 538639/docker-proxy
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 900/nginx: master p
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 970/sshd
tcp6 0 0 :::9080 :::* LISTEN 393063/promtail-lin
tcp6 0 0 :::3000 :::* LISTEN 264023/grafana-serv
tcp6 0 0 :::3100 :::* LISTEN 391839/loki-linux-a
tcp6 0 0 :::9090 :::* LISTEN 263154/prometheus
tcp6 0 0 :::9096 :::* LISTEN 391839/loki-linux-a
tcp6 0 0 :::9100 :::* LISTEN 262769/node_exporte
tcp6 0 0 :::44303 :::* LISTEN 393063/promtail-lin
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::7088 :::* LISTEN 538645/docker-proxy
tcp6 0 0 :::80 :::* LISTEN 900/nginx: master p
tcp6 0 0 :::8086 :::* LISTEN 538847/influxd
tcp6 0 0 :::22 :::* LISTEN 970/sshd
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 127.0.0.1:323 0.0.0.0:* 777/chronyd
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 ::1:323 :::* 777/chronyd
udp6 0 0 fe80::458:3aff:fed6:546 :::* 850/NetworkManager
特定のポートに関心がある場合は、grepを使用してフィルタリングできます:
sudo netstat -tulpn | grep 3000
sudo netstat -tulpn | grep grafana
フラグ:
- -tフラグはtcp接続を示します。
- -uフラグはudp接続を示します。
- -lフラグはリスニングソケットを表示します。
- -pフラグは、プロセスID(PID)とそのポートを使用しているもののプロセス名を表示します。
- -nフラグは数値アドレスを表示します。
詳細については、manページを参照してください。
man netstat
「ss」コマンドの使用
ss
ソケットを調査するためのコマンドラインユーティリティです。これは、netstatおよびss
の使用法に代わるものです。 netstat
とほぼ同じです 。 Redhat、Debian、およびそれらのバリアントなどの人気のあるLinuxディストリビューションにプリインストールされています。
どのサービスがどのポートでリッスンしているかを確認するには、次のコマンドを実行します。
sudo ss -tulpn
サンプル出力:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=705,fd=5),("systemd",pid=1,fd=33))
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:(("chronyd",pid=777,fd=6))
udp UNCONN 0 0 [::]:111 [::]:* users:(("rpcbind",pid=705,fd=7),("systemd",pid=1,fd=35))
udp UNCONN 0 0 [::1]:323 [::]:* users:(("chronyd",pid=777,fd=7))
udp UNCONN 0 0 [fe80::458:3aff:fed6:8255]%eth0:546 [::]:* users:(("NetworkManager",pid=850,fd=26))
tcp LISTEN 0 128 127.0.0.1:8088 0.0.0.0:* users:(("influxd",pid=538847,fd=3))
tcp LISTEN 0 128 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=902,fd=8),("nginx",pid=901,fd=8),("nginx",pid=900,fd=8))
tcp LISTEN 0 128 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=705,fd=4),("systemd",pid=1,fd=32))
tcp LISTEN 0 128 0.0.0.0:7088 0.0.0.0:* users:(("docker-proxy",pid=538639,fd=4))
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=902,fd=9),("nginx",pid=901,fd=9),("nginx",pid=900,fd=9))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=970,fd=5))
tcp LISTEN 0 128 *:9080 *:* users:(("promtail-linux-",pid=393063,fd=10))
tcp LISTEN 0 128 *:3000 *:* users:(("grafana-server",pid=264023,fd=10))
tcp LISTEN 0 128 *:3100 *:* users:(("loki-linux-amd6",pid=391839,fd=9))
tcp LISTEN 0 128 *:9090 *:* users:(("prometheus",pid=263154,fd=8))
tcp LISTEN 0 128 *:9096 *:* users:(("loki-linux-amd6",pid=391839,fd=10))
tcp LISTEN 0 128 *:9100 *:* users:(("node_exporter",pid=262769,fd=3))
tcp LISTEN 0 128 *:44303 *:* users:(("promtail-linux-",pid=393063,fd=11))
tcp LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=705,fd=6),("systemd",pid=1,fd=34))
tcp LISTEN 0 128 [::]:7088 [::]:* users:(("docker-proxy",pid=538645,fd=4))
tcp LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=902,fd=10),("nginx",pid=901,fd=10),("nginx",pid=900,fd=10))
tcp LISTEN 0 128 *:8086 *:* users:(("influxd",pid=538847,fd=5))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=970,fd=7))
特定のサービス(例:grafana)の出力をフィルタリングするには、次を使用します:
sudo ss -tulpn | grep grafana
sudo ss -tulpn | grep 3000
詳細については、manページを参照してください。
man ss
fuserコマンドのインストールと使用
コマンドラインユーティリティfuser
また、ファイルまたはソケットを使用してプロセスを識別するためにも使用されます。指定したファイルまたはファイルシステムを使用しているプロセスのPIDを表示します。
ほとんどのLinuxディストリビューションのデフォルトのリポジトリでも利用できます。
Linuxにインストールするには、次のコマンドを実行します。
Debian、Ubuntuの場合:
sudo apt install psmisc
CentOSでは、RHEL:
sudo yum install psmisc
sudo dnf install psmisc
特定のポートでリッスンしているサービスまたはプロセスのPIDを見つける必要があります。次のコマンドを使用して、ポート3000でリッスンしているプロセスのPIDを確認しましょう。
sudo fuser 3000/tcp
以下のような出力が表示されます。
3000/tcp: 264023
ここでは、264023
はPIDです。
次に、コマンドを使用してPIDを使用して実際のプロセスを確認します。
ps -p 264023 -o comm=
出力
# ps -p 264023 -o comm=
grafana-server
注:詳細な-v
を追加する フラグを使用すると、1つのコマンドで完全な詳細を表示できます。
sudo fuser -v 3000/tcp
出力:
# sudo fuser -v 3000/tcp
USER PID ACCESS COMMAND
3000/tcp: grafana 264023 F.... grafana-server
詳細については、マニュアルページを参照してください。
man fuser