Ich möchte wissen, welche Ports von welchen Prozessen in Embedded-Linux verwendet werden. Da es sich um einfaches Embedded-Linux handelt, gibt es keine Netzwerkbefehlszeilen wie netstat, lsof. (Es gibt nur grundlegende Befehlszeilen wie cat, cp, echo usw.).
Eine Teillösung scheint darin zu bestehen, die Befehlszeilen "cat / proc / net / tcp" und "cat / proc / net / udp" zu verwenden. Aber ich bin nicht sicher , ob die gedruckte Liste von diesen Befehlszeilen zeigen alle Ports im Einsatz , und die Liste nicht angezeigt , welcher Prozess zu bestimmt Port binded wird .
Kommentare sind willkommen.
linux
networking
process
tcp
Freddy
quelle
quelle
Antworten:
Sie sollten in der Lage sein, alle offenen Ports in
/proc/net/tcp
und zu finden/proc/net/udp
. Jede dieser Dateien verfügt über eineinode
Spalte, in der der Prozess gefunden werden kann, dem dieser Socket gehört.Sobald Sie eine Inode-Nummer haben, können Sie einen ls-Befehl ausführen
ls -l /proc/*/fd/* | grep socket:.$INODE
, um die Prozesse zu finden, die diesen Socket verwenden. Wenn ein Prozess mit unterschiedlichen Dateideskriptoren für unterschiedliche Threads eingerichtet wurde, müssen Sie möglicherweise den Befehl aufls -l /proc/*/task/*/fd/* | grep socket:.$INODE
erweitern, um alle zu finden.quelle
find /proc -lname "socket:\[$INODE\]" 2> /dev/null
Um die INODES für einen Port zu finden, führen Sie den folgenden Befehl aus
Verwenden Sie eine beliebige INODE-Ausgabe von oben, um die zugehörige PID wie folgt zu ermitteln
hier ist $ INODE der Wert eines INODE
In einem einzeiligen Befehl können wir überprüfen, ob ein Port offen ist und einer PID zugeordnet ist (siehe unten)
quelle