Saya mencoba untuk mendapatkan semua proses mendengarkan koneksi jaringan pada Mac OS X. netstat
tidak memiliki -p
opsi dan saya mencoba dengan lsof
lsof -i -sTCP:LISTEN
memberi saya daftar proses mendengarkan yang adil tetapi tidak semua. Saya dapat misalnya telnet ke port 10080 di mana saya memiliki proses mendengarkan koneksi tetapi ini tidak ditampilkan dalam output lsof
. Apa yang saya lewatkan?
$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.
tapi
$ sudo lsof -n -i | grep 10080
$
amanda
bukan 10080?-n
hanya mempengaruhi alamat dan bukan port. Untuk mendapatkan nomor port saya harus menggunakan-P
juga. Terima kasihlsof -i -sTCP:LISTEN
, dan tanpa-n
itu dan tidak mengungkapkan 10080 juga. Jadi, Anda harus menggunakan-P
.Jawaban:
Semua mengembalikan 32 entri yang sama (
... | wc -l
) pada Lion MBP saya yang banyak digunakan.-P -n
mencegahlsof
melakukan resolusi nama, dan itu tidak memblokir. Kehilangan salah satu dari ini, bisa sangat lambat.Untuk UDP:
sudo lsof -iUDP -P -n | egrep -v '(127|::1)'
. Tanpa-n
dan-P
, butuh waktu lama.Pengingat: Ini tidak termasuk pengaturan firewall.
sumber
-P
. Saya salah berasumsi-n
diterapkan tidak hanya untuk IP tetapi nomor port juga.Pertama cari tahu Id Proses (pid) yang telah menempati port yang diperlukan (mis. 5434):
Bunuh proses itu:
sumber
ps aux
tidak mencantumkan port yang digunakan proseskill -9
sebagai opsi pertama untuk menyingkirkan suatu proses adalah pilihan ekstrem. Juga, ini sebenarnya tidak menjawab pertanyaan, yang bukan tentang membunuh sesuatu, tetapi mencari tahu apa yang berjalan.