Bu ağ soketini ne kullanıyor?


18

Makinemdeki saati güncellemek için NTP kullanmaya çalışıyorum. Ancak, bana bir hata veriyor:

host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting

"Soket kullanımda" hatası ne anlama geliyor? Bu soketin ne kullandığını nasıl görebilirim?

Bu CentOS 4.x sistemimde olur, ancak FreeBSD 7.x, Ubuntu 10.04 ve Solaris 10'da da görüyorum.


Yanıtlar:


20

Yapabilirsin

lsof -n | grep -i "TCP\|UDP" | grep -v "ESTABLISHED\|CLOSE_WAIT"

tüm dinleme bağlantı noktalarınızı görmek için, ancak ntpd'nin çalıştığı donutlara dolar:

service ntpd status

Ve "Kullanılan soket ne anlama geliyor?" Bazı kırışıklıkları düzeltmek için affedilebilirsem (ve çok temel bir açıklama için, bunların çoğunun özürü sizin için düzeltici olabilir) ... TCP / IP (internet dili) her bilgisayarın bir IP adresine sahip olduğunu belirtir, ki bu da internetteki o bilgisayarı benzersiz bir şekilde tanımlar. Ayrıca, her IP adresinde bağlanabilecek 65.000 numaralı bağlantı noktası vardır.

Bir web sunucusuna bağlanmak istediğinizde, siteyi tarayıcınızda açarsınız, ancak alttaki makineler sizi web sunucusunun IP adresindeki 80 numaralı bağlantı noktasına bağlar. Web sunucusunun arka plan programı (80 numaralı bağlantı noktasına bağlantıları dinleyen program) bu bağlantı noktasını açık tutmak için kendisine ayırdığı bir "yuva" kullanır. Aynı anda yalnızca bir program aynı bağlantı noktasını kullanabilir.

Ntpd'yi çalıştırdığınız için, bu bağlantı noktasını kullanıyordu. 'ntpdate' bu bağlantı noktasına erişmeye çalıştı, ancak zaten açık tutulduğundan 'soket zaten kullanılıyor' hatasını aldınız.

Düzenle
UDP hesabında da değiştirildi


1
Benim dünyamı sallar! IPv4 üzerinde grep yanı sıra çeşitli IP tabanlı şeyler bulmak için.
geoffc

"Bunu zaten bilen herkese özür dileriz" - Özür dileme. Bu sitenin bir amacı sık sorulan sorulara iyi cevaplar vermektir. Bu erken betanın amacı içerik sağlamaktır.
Stefan Lasiewski

Biliyorum, ama soran kişinin onlarla konuşmaya çalışmadığımı bildiğinden emin olmak istedim.
Matt Simmons

Soruyu sordum ve sen benimle konuşmuyordun. Cevabı da biliyorum, ama bunun beta için iyi bir soru olduğunu düşünüyorum. Ve cevabınız yazacağım her şeyden çok daha iyiydi;)
Stefan Lasiewski

@MattSimmons IsofCentOS 7 cihazımda komut yok
üç blok

10

Açık soketleri aramak için netstat'ı da kullanabilirsiniz - diğer posterlerin önerdiği gibi lsof kullanmaktan çok daha temizdir. Bu komut satırını root olarak deneyin

netstat -lp -u -t

ilişkili pid'ler ve programlar da dahil olmak üzere tüm dinleme bağlantılarını görüntülemek için. -L parametresi dinleme bağlantılarını, -p parametresini görmek istediğinizi belirtir ve -t ve -u ve -u netstat'a yalnızca TCP ve UDP bağlantılarını (IPv4 ve IPv6) istediğinizi söyler.

Sayısal bağlantı noktası ve ana bilgisayar adlarını (ana bilgisayarlarda çözümlenmemiş ve bağlantı noktaları durumunda hizmet adlarına dönüştürülmemiş) görmek istiyorsanız, -nyukarıdaki komut satırına ekleyebilirsiniz .

EDIT: Bu Linux üzerinde çalışır - çevresinde BSD tabanlı kutuları yok çünkü BSD üzerinde ne kadar iyi bilmiyorum.


+1: Bu aslında ntpd işlemini gösteren tek cevaptır (varsayılan olarak UDP'yi dinler).
Stefan Lasiewski

İnsanlar için: Bayraklarınıznetstat --listen --programs --udp --tcp
Stefan Lasiewski

1
FreeBSD, '-p' ("Programları Göster") işlevini desteklemez, bu nedenle insanlar LSOF kullanır. Ayrıca -l ("Dinleme Soketlerini Göster") bayraklarını desteklemez, ancak bunu yapabileceğinizi düşünüyorum | grep LISTEN, ancak bu UDP bağlantılarını hariç tutuyor. Ama aksi takdirde, FreeBSD üzerindeki eşdeğer bayrakların olduğunu düşünüyorum:, netstat -p udp -p tcp -aancak netstat -adaha basit olabilir.
Stefan Lasiewski

@Stefan: Cevabım UDP soketlerini de gösterecek.
kbyrd

@kbyrd: İlginç. Benim için UDP paketleri göstermiyor. Yayınındaki yorumuma bakın.
Stefan Lasiewski

2

FreeBSD'de, lsof'un sizin için çalışmaması durumunda sockstat'ı da kullanabilirsiniz (örneğin, herhangi bir nedenle / dev / mem olmayan sanallaştırılmış sistemlerde). IPv4 yuvalarını dinleyen tüm programların bir listesini almak için:

sockstat -l4

1

Kök olarak şunu yapın:

lsof | grep IPv4 | grep LISTEN

Bu size IPv4 soketlerini dinleyen tüm işlemleri gösterecektir. Bunu -bengelleyebilecek lsofbazı şeyler yapmamak için eklemek isteyebilirsiniz. Bunu yaparsanız muhtemelen de yönlendirmek isteyeceksiniz o stderrkadar /dev/null.


Benim için bu udp paketleri göstermiyor gibi görünüyor. Bağlantı noktası 514 / udp dinleyerek rsyslogd çalıştıran bir Ubuntu kutusunu test ediyorum.
Stefan Lasiewski

sudo lsof |grep UDPUDP paketlerini görmek için yapmam gerekiyor .
Stefan Lasiewski

1

lsofBu soketi hangi uygulamanın kullandığını bulmak için kullanabilirsiniz .


0

OS X 10.9.5'te bu üçü bir arada oyun:

sudo lsof | grep \ IPv | sort ; clear ; sudo lsof -U ; clear ; sudo netstat -a


0

FreeBSD ile -uanahtarı ntpdatebunun yerine ayrıcalıksız bir bağlantı noktası kullanır.

Sevmek: ntpdate -v -b -u 0.freebsd.pool.ntp.org

man ntpdateNe olduğunu -vve ne yaptığını görmek için kullanın -b.


Debian'daki ntpdate -useçeneği var, ntp.org'dan beri, çoğu sistemin buna sahip olduğunu hayal ediyorum.
RobertL
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.