Próbuję użyć NTP, aby zaktualizować czas na moim komputerze. Daje mi to jednak błąd:
host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting
Co oznacza błąd „gniazdo jest używane”? Jak mogę zobaczyć, co korzysta z tego gniazda?
Dzieje się tak na moim systemie CentOS 4.x, ale widzę to również na FreeBSD 7.x, Ubuntu 10.04 i Solaris 10.
networking
process
freebsd
open-files
Stefan Lasiewski
źródło
źródło
Odpowiedzi:
Możesz to zrobić
aby zobaczyć wszystkie twoje porty nasłuchujące, ale dolary do pączków, które działa ntpd:
A co do „Co oznacza używane gniazdo”? Jeśli mogę wybaczyć wygładzenie niektórych zmarszczek (i dla bardzo podstawowego wyjaśnienia, przeprosiny dla większości z nich są dla ciebie naprawą) ... TCP / IP (język Internetu) określa, że każdy komputer ma adres IP, który jednoznacznie identyfikuje ten komputer w Internecie. Ponadto na każdym adresie IP można podłączyć 65 000 numerowanych portów.
Gdy chcesz połączyć się z serwerem internetowym, otwierasz witrynę w przeglądarce, ale znajdujące się pod nią urządzenie w rzeczywistości łączy Cię z portem 80 na adresie IP serwera WWW. Demon serwera WWW (program nasłuchujący połączeń z portem 80) używa „gniazda” do utrzymywania otwartego portu, rezerwując go dla siebie. Tylko jeden program może korzystać z tego samego portu jednocześnie.
Ponieważ miałeś uruchomione narzędzie NTTP, korzystało z tego portu. Polecenie „ntpdate” próbowało uzyskać dostęp do tego portu, ale ponieważ był on już otwarty, wystąpił błąd „gniazdo jest już w użyciu”.
Edytuj
Zmieniono również na konto UDP
źródło
Isof
polecenia w moim CentOS 7.Możesz także użyć netstat do szukania otwartych gniazd - jest to o wiele czystsze niż używanie lsof, jak sugerują inne plakaty. Wypróbuj ten wiersz poleceń jako root
netstat -lp -u -t
aby wyświetlić wszystkie połączenia nasłuchujące, w tym powiązane z nimi pid i programy. Parametr -l określa połączenia nasłuchujące, -p określa, że chcesz zobaczyć PID / nazwę, a -t i -u informuje netstat, że chcesz tylko połączenia TCP i UDP (IPv4 i IPv6).
Jeśli chcesz zobaczyć numeryczne nazwy portów i hostów (tzn. Nie są rozpoznawane w przypadku hostów i nie są przekształcane w nazwy usług w przypadku portów), możesz dodać
-n
do wiersza polecenia powyżej.EDYCJA: Działa to na Linuksie - nie wiem, jak dobrze działa na BSD, ponieważ nie mam żadnych pudeł opartych na BSD.
źródło
netstat --listen --programs --udp --tcp
| grep LISTEN
, ale wyklucza to połączenia UDP. Ale poza tym uważam, że równoważne flagi na FreeBSD to:,netstat -p udp -p tcp -a
alenetstat -a
mogą być prostsze.W FreeBSD możesz także użyć sockstat, jeśli lsof nie działa dla ciebie (np. W zwirtualizowanych systemach, które nie mają / dev / mem z jakiegokolwiek powodu). Aby uzyskać listę wszystkich programów z nasłuchującymi gniazdami IPv4:
źródło
Jako root wykonaj następujące czynności:
Spowoduje to wyświetlenie wszystkich procesów nasłuchujących na gniazdach IPv4. Możesz dodać,
-b
aby uniemożliwićlsof
wykonanie niektórych czynności, które mogą go zablokować. Jeśli to zrobisz, prawdopodobnie będziesz również chciał przekierowaćstderr
na/dev/null
.źródło
sudo lsof |grep UDP
aby zobaczyć pakiety UDP.Możesz użyć,
lsof
aby dowiedzieć się, która aplikacja korzysta z tego gniazda.źródło
Zabawa z tym urządzeniem trzy w jednym w systemie OS X 10.9.5:
sudo lsof | grep \ IPv | sort ; clear ; sudo lsof -U ; clear ; sudo netstat -a
źródło
W FreeBSD użyj
-u
przełącznika, któryntpdate
zamiast tego używa nieuprzywilejowanego portu.Lubić:
ntpdate -v -b -u 0.freebsd.pool.ntp.org
Użyj,
man ntpdate
aby zobaczyć, co-v
i co-b
robi.źródło
-u
opcję, ponieważ pochodzi z ntp.org, myślę, że większość systemów ją ma.