Я пытаюсь использовать NTP для обновления времени на моей машине. Тем не менее, это дает мне ошибку:
host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting
Что означает ошибка «используется сокет»? Как я могу увидеть, что использует этот сокет?
Это происходит в моей системе CentOS 4.x, но я также вижу это во FreeBSD 7.x, Ubuntu 10.04 и Solaris 10.
networking
process
freebsd
open-files
Стефан Ласевский
источник
источник
Ответы:
Ты можешь сделать
чтобы увидеть все ваши порты прослушивания, кроме долларов на пончики, которые запускает ntpd:
А что означает «Что использует сокет»? Если я могу быть прощен за сглаживание некоторых морщин (и за самое простое объяснение, извинения большинства из них являются исправительными для вас) ... TCP / IP (язык Интернета) указывает, что у каждого компьютера есть IP-адрес, который однозначно идентифицирует этот компьютер в интернете. Кроме того, на каждом IP-адресе есть 65 000 пронумерованных портов, к которым можно подключиться.
Когда вы хотите подключиться к веб-серверу, вы открываете сайт в браузере, но механизм под ним фактически соединяет вас с портом 80 на IP-адресе веб-сервера. Демон веб-сервера (программа, прослушивающая соединения с портом 80) использует «сокет», чтобы держать этот порт открытым, зарезервировав его для себя. Только одна программа может использовать один и тот же порт одновременно.
Так как у вас был запущен ntpd, он использовал этот порт. «ntpdate» попытался получить доступ к этому порту, но, поскольку он уже оставался открытым, вы получили ошибку «сокет уже используется».
Изменить
Изменено также учетная запись для UDP
источник
Isof
команды в моем CentOS 7.Вы также можете использовать netstat для поиска открытых сокетов - это намного чище, чем использование lsof, как предлагали другие авторы. Попробуйте эту командную строку как root
netstat -lp -u -t
просматривать все прослушивающие соединения, включая связанные с ними pid и программы. Параметр -l - это то, что определяет прослушиваемые соединения, -p указывает, что вы хотите видеть PID / name, а -t и -u сообщают netstat, что вам нужны только соединения TCP и UDP (IPv4 и IPv6).
Если вы хотите видеть числовые порты и имена хостов (т.е. не разрешены в случае хостов и не преобразованы в имена сервисов в случае портов), вы можете добавить
-n
их в командную строку выше.РЕДАКТИРОВАТЬ: Это работает на Linux - я не знаю, насколько хорошо это работает на BSD, так как у меня нет никаких коробок на основе BSD вокруг.
источник
netstat --listen --programs --udp --tcp
| grep LISTEN
, но это исключает UDP-соединения. Но в остальном я думаю, что эквивалентные флаги во FreeBSD:,netstat -p udp -p tcp -a
ноnetstat -a
могут быть проще.В FreeBSD вы также можете использовать sockstat в случае, если lsof не работает для вас (например, в виртуализированных системах, которые по какой-либо причине не имеют / dev / mem). Чтобы получить список всех программ с прослушиванием сокетов IPv4:
источник
От имени root сделайте это:
Это покажет вам все процессы, которые прослушивают сокеты IPv4. Вы можете добавить,
-b
чтобы предотвратитьlsof
некоторые вещи, которые могут его заблокировать. Если вы сделаете это, вы, вероятно, также захотите перенаправитьstderr
на/dev/null
.источник
sudo lsof |grep UDP
чтобы увидеть UDP-пакеты.Вы можете использовать,
lsof
чтобы найти, какое приложение использует этот сокет.источник
Играя с этим три в одном на OS X 10.9.5:
sudo lsof | grep \ IPv | sort ; clear ; sudo lsof -U ; clear ; sudo netstat -a
источник
В FreeBSD используйте
-u
коммутатор, чтобыntpdate
вместо него использовать непривилегированный порт.Подобно:
ntpdate -v -b -u 0.freebsd.pool.ntp.org
Используйте,
man ntpdate
чтобы увидеть, что-v
и-b
делает.источник
-u
опция, так как она с ntp.org, я думаю, что у большинства систем она есть.