Przeglądając / proc / $ mypid / fd /, widzę te pliki
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 0 -> /dev/pts/36 (deleted)
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 3 -> socket:[1424055856]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 4 -> socket:[1424055868]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 5 -> socket:[1424055882]
Ponieważ mam dostęp do kodu, wiem, że te gniazda są powiązane z połączeniami TCP (jedno to połączenie z portem 5672 na innym komputerze, drugie to połączenie z portem 3306 na innym komputerze), ale chcę wiedzieć, które gniazdo jest związany z jakim połączeniem. Jak mogę to zrobić?
Mówiąc bardziej ogólnie, jak mogę zapytać system operacyjny, co znajduje się na drugim końcu gniazda?
networking
proc
socket
benhsu
źródło
źródło
socat
....Odpowiedzi:
Polecenie lsof
Dobrym rozwiązaniem może być
lsof
. Jakman lsof
stwierdza, jest to przydatne do uzyskiwania informacji oopen files such as Internet sockets or Unix Domain sockets
.Użyj tego
Najpierw uzyskaj przegląd
/proc/$PID/fd/
i wymienione numery gniazd.Na przykład
socket:[14240]
może Cię zainteresować.Następnie użyj,
lsof -i -a -p $PID
aby wydrukować listę wszystkich$PID
zastosowań plików sieciowych .-i
tworzy listę plików sieciowych należących do użytkownika lub procesu-a
logicznie łączy lub podane parametry AND-p $PID
wybiera informacje tylko o twoim procesieTypowe wyjście dla mojej przeglądarki działającej z PID o wartości
2543
może być:i więcej podobnych linii.
Świetny! Teraz przyjrzyj się bliżej
DEVICE
kolumnie. Pasuje do naszego wcześniej wymienionego gniazda od/proc/$PID/fd/
!Dzięki tej
NAME
sekcji możemy powiedzieć, jaki jest drugi koniec naszego gniazda.W prawdziwym świecie możesz uzyskać dobrą wydajność, ale po prostu filtruj lub
grep
dla swojego zainteresowania.Jestem prawie pewien, że można połączyć wszystkie polecenia, ale to powinno wystarczyć, aby zacząć.
źródło
grep -rni ffff88002704d380 /proc
. gdzieś w / proc / może leżeć twoja odpowiedź,cat
znaleziono plik grep. Ale nie zwalaj mnie na to ... Może tu być strasznie źle.lsof
czyta inne informacje o gnieździe z/proc/net/tcp
,/proc/net/tcp6
,/proc/net/udp
i tak dalej, w zależności od typu gniazda.