Saya mencoba menggunakan NTP untuk memperbarui waktu di mesin saya. Namun, itu memberi saya kesalahan:
host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting
Apa artinya kesalahan "soket sedang digunakan"? Bagaimana saya bisa melihat apa yang menggunakan soket ini?
Ini terjadi pada sistem CentOS 4.x saya, tetapi saya juga melihatnya di FreeBSD 7.x, Ubuntu 10.04 dan Solaris 10.
networking
process
freebsd
open-files
Stefan Lasiewski
sumber
sumber
Jawaban:
Anda dapat melakukan
untuk melihat semua porta mendengarkan Anda, tetapi dolar untuk donat yang sedang berjalan ntpd:
Dan untuk "Apa artinya soket digunakan" artinya? Jika saya dapat dimaafkan untuk merapikan beberapa kerutan (dan untuk penjelasan yang sangat mendasar, permintaan maaf sebagian besar dari ini adalah perbaikan untuk Anda) ... TCP / IP (bahasa internet) menetapkan bahwa setiap komputer memiliki alamat IP, yang secara unik mengidentifikasi komputer itu di internet. Selain itu, ada 65.000 port bernomor pada setiap alamat IP yang dapat dihubungkan.
Ketika Anda ingin terhubung ke server web, Anda membuka situs di browser Anda, tetapi mesin di bawahnya sebenarnya menghubungkan Anda ke port 80 pada IP server web. Daemon server web (program yang mendengarkan koneksi ke port 80) menggunakan "socket" untuk membuka port itu, menyimpannya sendiri. Hanya satu program yang dapat menggunakan port yang sama dalam satu waktu.
Karena Anda menjalankan ntpd, itu menggunakan port itu. 'ntpdate' mencoba mengakses port itu, tetapi karena sudah terbuka, Anda mendapatkan kesalahan 'soket sudah digunakan'.
Sunting
Diubah ke akun untuk UDP juga
sumber
Isof
perintah di CentOS saya 7.Anda juga dapat menggunakan netstat untuk mencari soket terbuka - jauh lebih bersih daripada menggunakan lsof seperti yang disarankan poster lainnya. Coba baris perintah ini sebagai root
netstat -lp -u -t
untuk melihat semua koneksi mendengarkan, termasuk pid dan program yang terkait. Parameter -l adalah yang menentukan koneksi mendengarkan, -p menentukan bahwa Anda ingin melihat PID / nama dan -t dan -u memberi tahu netstat bahwa Anda hanya menginginkan koneksi TCP dan UDP (IPv4 dan IPv6).
Jika Anda ingin melihat port numerik dan nama host (mis. Tidak diselesaikan dalam kasus host, dan tidak berubah menjadi nama layanan dalam kasus port), Anda dapat menambahkan
-n
ke baris perintah di atas.EDIT: Ini berfungsi di Linux - Saya tidak tahu seberapa baik kerjanya di BSD, karena saya tidak punya kotak berbasis BSD.
sumber
netstat --listen --programs --udp --tcp
| grep LISTEN
, tetapi itu tidak termasuk koneksi UDP. Tetapi sebaliknya, saya pikir flag yang setara pada FreeBSD adalah:,netstat -p udp -p tcp -a
tetapinetstat -a
mungkin lebih sederhana.Pada FreeBSD, Anda juga dapat menggunakan sockstat jika ia tidak bekerja untuk Anda (misalnya pada sistem tervirtualisasi yang tidak memiliki / dev / mem untuk alasan apa pun). Untuk mendapatkan daftar semua program dengan mendengarkan soket IPv4:
sumber
Sebagai root, lakukan ini:
Ini akan menunjukkan kepada Anda semua proses yang mendengarkan pada soket IPv4. Anda mungkin ingin menambahkan
-b
untuk mencegahlsof
melakukan beberapa hal yang mungkin memblokirnya. Jika Anda melakukannya Anda mungkin juga ingin mengarahkanstderr
ke/dev/null
.sumber
sudo lsof |grep UDP
untuk melihat paket UDP.Anda dapat menggunakan
lsof
untuk menemukan aplikasi mana yang menggunakan soket ini.sumber
Bermain-main dengan three-in-one ini pada OS X 10.9.5:
sudo lsof | grep \ IPv | sort ; clear ; sudo lsof -U ; clear ; sudo netstat -a
sumber
Dengan FreeBSD gunakan
-u
sakelar sehinggantpdate
menggunakan port yang tidak diprivasi sebagai gantinya.Suka:
ntpdate -v -b -u 0.freebsd.pool.ntp.org
Gunakan
man ntpdate
untuk melihat apa-v
dan apa-b
.sumber
-u
opsi, karena ini dari ntp.org, saya kira sebagian besar sistem memilikinya.