Je veux savoir quels ports sont utilisés par quels processus dans Embedded-Linux. Puisqu'il s'agit d'un simple Linux intégré, il n'y a pas de lignes de commande réseau telles que netstat, lsof. (seules les lignes de commande de base telles que cat, cp, echo, etc. existent).
Une solution partielle semble être d'utiliser les lignes de commande "cat / proc / net / tcp" et "cat / proc / net / udp". Cependant, je ne suis pas sûr que la liste imprimée de ces lignes de commande affiche tous les ports utilisés et la liste ne montre pas quel processus est lié à certains ports .
Tous les commentaires seraient appréciés.
linux
networking
process
tcp
freddy
la source
la source
Réponses:
Vous devriez pouvoir trouver tous les ports ouverts dans
/proc/net/tcp
et/proc/net/udp
. Chacun de ces fichiers a uneinode
colonne, qui peut être utilisée pour trouver le processus propriétaire de ce socket.Une fois que vous avez un numéro d'inode, vous pouvez exécuter une commande ls telle que
ls -l /proc/*/fd/* | grep socket:.$INODE
pour trouver les processus utilisant ce socket. Dans le cas où un processus a été configuré avec différents descripteurs de fichiers pour différents threads, vous devrez peut-être étendre la commande àls -l /proc/*/task/*/fd/* | grep socket:.$INODE
afin de les trouver tous.la source
find /proc -lname "socket:\[$INODE\]" 2> /dev/null
Pour trouver les INODES pour n'importe quel port, exécutez la commande ci-dessous
Utilisez n'importe quel INODE de la sortie de commande ci-dessus pour trouver le PID associé comme ci-dessous
ici $ INODE est la valeur de tout INODE
Dans une commande sur une seule ligne, nous pouvons vérifier si un port est ouvert et associé à un PID comme ci-dessous
la source