Ada port mendengarkan dan mendengarkan

50

Saya mencoba untuk mendapatkan semua proses mendengarkan koneksi jaringan pada Mac OS X. netstattidak memiliki -popsi 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
$
Matteo
sumber
3
Apakah output dari lsof mengatakan amandabukan 10080?
Jon Lin
3
@ JonLin Saya tidak melihat bahwa -nhanya mempengaruhi alamat dan bukan port. Untuk mendapatkan nomor port saya harus menggunakan -Pjuga. Terima kasih
Matteo
3
@ JonLin: tetapi Anda memiliki posting lsof -i -sTCP:LISTEN, dan tanpa -nitu dan tidak mengungkapkan 10080 juga. Jadi, Anda harus menggunakan -P.
Hanan N.

Jawaban:

75
sudo lsof -iTCP -sTCP:LISTEN
sudo lsof -iTCP -sTCP:LISTEN -P
sudo lsof -iTCP -sTCP:LISTEN -P -n
sudo lsof -iTCP -sTCP:LISTEN -n

Semua mengembalikan 32 entri yang sama ( ... | wc -l) pada Lion MBP saya yang banyak digunakan.

-P -nmencegah lsofmelakukan 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 -ndan -P, butuh waktu lama.

Pengingat: Ini tidak termasuk pengaturan firewall.

Barry A.
sumber
3
Ya masalahnya adalah yang hilang -P. Saya salah berasumsi -nditerapkan tidak hanya untuk IP tetapi nomor port juga.
Matteo
-1
  1. Pertama cari tahu Id Proses (pid) yang telah menempati port yang diperlukan (mis. 5434):

    ps aux | grep 5434
    
  2. Bunuh proses itu:

    kill -9 <pid>
    
Ashutosh Gupta
sumber
5
ps auxtidak mencantumkan port yang digunakan proses
Matteo
Saya setuju dengan Matteo; apakah Anda yakin tidak melakukan sesuatu seperti netstat -anp | grep 5434 (yang akan mengembalikan daftar hal-hal yang mendengarkan pada 5434, dan kolom pertama atau kedua adalah pid?)
Foon
6
Dengan demikian hanya bisa bekerja dalam situasi di mana suatu proses dipanggil dengan nomor port yang diberikan secara eksplisit dalam string eksekusi dan bahwa bagian dari string akan dicocokkan dengan grep.
techraf
1
Menggunakan kill -9sebagai 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.
lindes