Chcę wiedzieć, które porty są używane przez które procesy w embedded-linux. Ponieważ jest to prosty embedded-linux, nie ma sieciowych linii poleceń, takich jak netstat, lsof. (istnieją tylko podstawowe wiersze poleceń, takie jak cat, cp, echo itp.).
Częściowym rozwiązaniem wydaje się być użycie wiersza poleceń „cat / proc / net / tcp” i „cat / proc / net / udp”. Jednak nie jestem pewien wydrukowany lista z tych linii poleceń pokazuje wszystkie porty w użytku , a lista nie pokazuje proces, który jest binded do określonego portu .
Wszelkie uwagi będą mile widziane.
linux
networking
process
tcp
Freddy
źródło
źródło
Odpowiedzi:
Powinieneś być w stanie znaleźć wszystkie otwarte porty w
/proc/net/tcp
i/proc/net/udp
. Każdy z tych plików mainode
kolumnę, której można użyć do znalezienia procesu będącego właścicielem tego gniazda.Po uzyskaniu numeru i-węzła możesz uruchomić polecenie ls,
ls -l /proc/*/fd/* | grep socket:.$INODE
aby znaleźć procesy korzystające z tego gniazda. Jeśli proces został skonfigurowany z różnymi deskryptorami plików dla różnych wątków, może być konieczne rozszerzenie polecenials -l /proc/*/task/*/fd/* | grep socket:.$INODE
, aby znaleźć je wszystkie.źródło
find /proc -lname "socket:\[$INODE\]" 2> /dev/null
Aby znaleźć INODES dla dowolnego portu, wykonaj poniższe polecenie
Użyj dowolnego INODE z powyższego wyjścia komendy, aby znaleźć powiązany PID, jak poniżej
tutaj $ INODE jest wartością dowolnego INODE
W poleceniu w jednym wierszu możemy sprawdzić, czy jakikolwiek port jest otwarty i powiązany z dowolnym PID, jak poniżej
źródło