Linuxでネットワークコマンドラインを使用せずに開かれたポートのリストとそれを所有するプロセスをどのように知ることができますか?

Linuxでネットワークコマンドラインを使用せずに開かれたポートのリストとそれを所有するプロセスをどのように知ることができますか?

組み込みLinuxでは、どのプロセスがどのポートを使用しているかを知りたいです。単純な組み込みLinuxなので、netstat、lsofなどのネットワークコマンドラインはありません。 (cat、cp、echoなどの基本的なコマンドラインのみが存在します。)

解決策の一部は、「cat /proc/net/tcp」および「cat /proc/net/udp」コマンドラインを使用するようです。しかし、このコマンドラインの印刷リストに使用されているすべてのポートが表示されるかどうかはわかりません。リストには、どのプロセスが特定のポートにバインドされているかは表示されません。

どんなアドバイスも本当にありがとうございます。

ベストアンサー1

/proc/net/tcpとで開いているすべてのポートを見つけることができるはずです/proc/net/udp。各ファイルには、inodeそのソケットを所有するプロセスを見つけるために使用できる列があります。

inode 番号がある場合は、ls コマンドを実行してls -l /proc/*/fd/* | grep socket:.$INODEそのソケットを使用するプロセスを見つけることができます。プロセスに異なるスレッドに設定された異なるファイル記述子がある場合は、コマンドを展開してすべてのls -l /proc/*/task/*/fd/* | grep socket:.$INODEファイル記述子を見つける必要があります。

おすすめ記事