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
timpone
sumber
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.

Scott Pack
sumber
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.

CDSU
sumber
-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.
5

Saya sedang dalam proses memodifikasi netstatpada OS X untuk menyediakan fitur ini dan menemukan fakta yang -vakan memberi Anda pid yang terkait dengan soket.

Sean Hamilton
sumber
The -vmeningkatkan tingkat bertele-tele dan didokumentasikan. developer.apple.com/library/mac/documentation/Darwin/Reference/…
Leathe
1
maaf, maksud saya fakta bahwa ia mencetak PID tidak didokumentasikan, bukan bahwa opsi ada.
Sean Hamilton
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
Tomachi
sumber
1

Untuk mengetahui port tertentu gunakan di bawah perintah netstat

  netstat -an | grep ':8080'

sumber
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

Hermes Conrad
sumber
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'
suhas
sumber