Cara menggunakan netstat untuk menunjukkan proses apa yang sedang didengarkan di port


27

Saya menggunakan laptop OS X Mountain Lion dan memiliki beberapa kotak Vagrant. Saya mencoba mencari tahu proses mana yang sedang mendengarkan pada port 8080. Variasi saya menghasilkan seperti seratus baris tetapi tidak ada dengan nomor port tertentu. Saya mengasumsikan sesuatu seperti:

netstat -XXX | grep 8080

Apakah ini di lingkungan rumah atau lingkungan profesional?
Lucas Kauffman

baik, membuat ulang server enviro secara lokal. jika Anda ingin pindah ke situs lain, itu tidak masalah. Versi netstat yang berbeda mendukung argumen yang berbeda.
timpone

Baiklah pak, semuanya tampak beres di sini, tolong lanjutkan dan semoga harimu menyenangkan.
Lucas Kauffman

Jawaban:


52

Sayangnya pada OSX Anda terjebak dengan BSD netstatyang tidak akan menunjukkan kepada Anda proses ID yang dilampirkan ke port yang diberikan. Yang harus Anda lakukan adalah menggunakan lsof. Sintaks yang perlu Anda gunakan adalah:

lsof -i :8080

Ini akan mencetak sekumpulan informasi, yang sebagian besar tidak Anda pedulikan, tetapi bidangnya diberi label dengan baik. Sebagai contoh, lihat contoh output ini.

lsof -i :53237
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
GoogleTal 927 guest   29u  IPv4 0x2c3f7f95244855c3      0t0  TCP localhost:53237 (LISTEN)

Ini memberitahu saya bahwa port 53237 sedang digunakan oleh proses ID 927. Ketika membaca bidang PERINTAH ingat bahwa output ini terpotong, pada kenyataannya nama lengkap biner adalah GoogleTalkPlugin.


thx, ini membuat saya lebih dekat, itu akan menjadi cukup generik VBoxHeadl- apakah ada cara untuk melihat contoh VirtualBox (punya dua sekarang) atau saya bertanya terlalu banyak (mungkin yang terakhir). thx
timpone

@impone: Saya tidak cukup tahu tentang VirtualBox untuk membantu Anda menyusuri jalan itu. Anda dapat memeriksa baris perintah proses untuk melihat apakah itu terdaftar di sana, atau menggunakan lsof -p PIDdan menelusuri daftar file yang terbuka sampai Anda menemukannya.
Scott Pack

keren,
terima kasih

8

Ini adalah apa yang saya suka gunakan ketika mencari PID port mendengarkan. Untuk penggunaan Linux:netstat -tunlp

  • n jaringan
  • l mendengarkan port
  • proses p
  • t tcp
  • kamu udp

Informasi tambahan dapat ditemukan di halaman manual.


-ptidak mencantumkan argumen ke program. Bagaimana saya melihat ini?
jameshfisher

4
OP bertanya tentang OSX. -p bukan opsi pada versi OSX dari netstat.
Ted Bigham

-ppada OSX adalah port. Saya benci keputusan pengembang untuk membuat argumen berbeda untuk OSX dan Linux ...
Daniel W.


4

Bagi saya, dua baris berikut ini berfungsi paling baik untuk menunjukkan aplikasi mana yang memiliki port mendengarkan terbuka, dan tunnel, lsof sepenuhnya lintas platform:

netstat -Watn | grep LISTEN
lsof -Pnl +M -i -cmd | grep LISTEN

1

Untuk mengetahui port tertentu gunakan di bawah perintah netstat

  netstat -an | grep ':8080'

3
OP bertanya tentang mendapatkan prosesnya. Ini tidak menunjukkan id proses.
Ted Bigham

1

Dari man netstat

-p, --program Tunjukkan PID dan nama program yang dimiliki oleh setiap soket.

Saya biasanya hanya melakukan ini: netstat -antup | grep 8080


hmm ... ini kedengarannya seperti apa yang saya suka tetapi ini memberi saya opsi yang berbeda pada OS X untuk -p-p protocol Show statistics about protocol, which is either a well-known name
timpone

@impone: Untuk -pmenampilkan PID adalah perintah netstat GNU sedangkan OSX menggunakan BSD netstat.
Scott Pack

-ptidak mencantumkan argumen ke program. Bagaimana saya melihat ini?
jameshfisher

1
OP bertanya tentang OSX. -p bukan opsi pada versi OSX dari netstat.
Ted Bigham

-ppada OSX adalah port. Saya benci keputusan pengembang untuk membuat argumen berbeda untuk OSX dan Linux ...
Daniel W.

0

Perintah di bawah ini menunjukkan koneksi:

netstat -antop | grep :8080

Untuk melihat alur lengkap dalam waktu nyata Anda dapat menggunakan watch:

watch -d -t -n 1 'lsof -n -i :8080'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.