Bagaimana Anda bisa mengetahui proses mana yang mendengarkan pada port di Windows?
windows
networking
port
Hanya baca
sumber
sumber
Jawaban:
Jawaban baru, PowerShell
Jawaban lama, cmd
(Tambah -n untuk menghentikannya mencoba menyelesaikan nama host, yang akan membuatnya jauh lebih cepat.)
Perhatikan rekomendasi Dane untuk TCPView . Itu terlihat sangat berguna!
-a Menampilkan semua koneksi dan port mendengarkan.
-b Menampilkan executable yang terlibat dalam membuat setiap koneksi atau mendengarkan port. Dalam beberapa kasus, executable yang terkenal menjadi tuan rumah beberapa komponen independen, dan dalam kasus ini urutan komponen yang terlibat dalam menciptakan koneksi atau port mendengarkan ditampilkan. Dalam hal ini nama yang dapat dieksekusi ada di [] di bagian bawah, di atas adalah komponen yang disebutnya, dan seterusnya hingga TCP / IP tercapai. Perhatikan bahwa opsi ini dapat memakan waktu dan akan gagal kecuali Anda memiliki izin yang memadai.
-n Menampilkan alamat dan nomor port dalam bentuk numerik.
-o Menampilkan ID proses kepemilikan yang terkait dengan setiap koneksi.
sumber
1234
- maka Anda dapat menggunakantasklist /fi "pid eq 1234"
untuk mengetahui nama dan detail lain dari proses tersebut.Ada GUI asli untuk Windows:
Atau Jalankan
resmon.exe
, atau dari tab kinerja Task Manager .sumber
Gunakan TCPView jika Anda menginginkan GUI untuk ini. Ini adalah aplikasi Sysinternals lama yang dibeli Microsoft.
sumber
Untuk Windows:
sumber
netstat -aon | find /i "abhören"
untuk jerman.FIND: Parameter format not correct
Saklar -b yang disebutkan dalam sebagian besar jawaban mengharuskan Anda memiliki hak administratif di mesin. Anda tidak benar-benar membutuhkan hak tinggi untuk mendapatkan nama proses!
Temukan pid dari proses yang berjalan di nomor port (misalnya, 8080)
Temukan nama proses dengan pid
sumber
Anda bisa mendapatkan informasi lebih lanjut jika Anda menjalankan perintah berikut:
menggunakan perintah 'Temukan' memungkinkan Anda untuk menyaring hasil.
find /i "listening"
hanya akan menampilkan porta yang 'Mendengarkan'. Catatan, Anda perlu/i
mengabaikan case, jika tidak, ketikkan "LISTENING".| find "port"
akan membatasi hasil hanya pada yang berisi nomor port tertentu. Catatan, ini juga akan menyaring dalam hasil yang memiliki nomor port di mana saja di string respons.sumber
FIND: Parameter format not correct
. Anda perlu menambahkan spasi setelah kriteria pencarian. Ini akan meninggalkan Andanetstat -aon | find /i "listening" | find "1234 "
.{back tick}
" mendengarkan{back tick}
"" | menemukan "{back tick}
" port{back tick}
" "(<- perhatikan kutipan yang lolos - maafkan istilahback tick
karena saya tidak dapat menambahkan karakter yang sebenarnya karena dianggap sebagai potongan)Buka jendela command prompt (sebagai Administrator) Dari "Start \ Search box" Masukkan "cmd" lalu klik kanan pada "cmd.exe" dan pilih "Run as Administrator"
Masukkan teks berikut lalu tekan Enter.
netstat -abno
-a Menampilkan semua koneksi dan port mendengarkan.
-b Menampilkan executable yang terlibat dalam membuat setiap koneksi atau mendengarkan port. Dalam beberapa kasus, executable yang terkenal menjadi tuan rumah beberapa komponen independen, dan dalam kasus ini urutan komponen yang terlibat dalam menciptakan koneksi atau port mendengarkan ditampilkan. Dalam hal ini nama yang dapat dieksekusi ada di [] di bagian bawah, di atas adalah komponen yang disebutnya, dan seterusnya hingga TCP / IP tercapai. Perhatikan bahwa opsi ini dapat memakan waktu dan akan gagal kecuali Anda memiliki izin yang memadai.
-n Menampilkan alamat dan nomor port dalam bentuk numerik.
-o Menampilkan ID proses kepemilikan yang terkait dengan setiap koneksi.
Temukan Port yang Anda dengarkan di bawah "Alamat Lokal"
Lihatlah nama proses langsung di bawah itu.
CATATAN: Untuk menemukan proses di bawah Task Manager
Perhatikan PID (pengidentifikasi proses) di sebelah port yang Anda lihat.
Buka Windows Task Manager.
Pilih tab Proses.
Cari PID yang Anda catat ketika Anda melakukan netstat pada langkah 1.
Jika Anda tidak melihat kolom PID, klik pada kolom Lihat / Pilih. Pilih PID.
Pastikan “Tampilkan proses dari semua pengguna” dipilih.
sumber
Dapatkan PID dan Nama Gambar
Gunakan hanya satu perintah:
di mana
9000
harus diganti dengan nomor port Anda.The Output akan berisi sesuatu seperti ini:
Penjelasan:
iterates melalui setiap baris dari output dari perintah berikut:
dari setiap baris, PID (
%a
- nama tidak penting di sini) diekstraksi (PID adalah elemen5
th di baris itu) dan diteruskan ke perintah berikutJika Anda ingin melewatkan satu sundulan dan kembalinya command prompt , Anda dapat menggunakan:
Keluaran:
sumber
findstr :9000
jika tidak, Anda bahkan akan menemukan aplikasi yang berisi angka (misalnya ketika Anda mencari "80" Anda akan menemukan aplikasi di port 80, 800, 8000 juga).Pertama-tama kita menemukan id proses dari tugas tertentu yang perlu kita hilangkan untuk mendapatkan port gratis:
Tipe
Setelah mengeksekusi perintah ini di prompt baris perintah Windows (cmd), pilih pid yang saya pikir kolom terakhir. Misalkan ini adalah 3312.
Sekarang ketik
Anda sekarang dapat memeriksa silang dengan mengetikkan
netstat
perintah.CATATAN: terkadang Windows tidak mengizinkan Anda untuk menjalankan perintah ini langsung pada CMD, jadi pertama-tama Anda harus mengikuti langkah-langkah ini:
Dari menu mulai -> command prompt (klik kanan pada command prompt, dan jalankan sebagai administrator)
sumber
Untuk mendapatkan daftar semua ID proses kepemilikan yang terkait dengan setiap koneksi:
Jika ingin membunuh proses apa pun miliki ID dan gunakan perintah ini, sehingga port menjadi bebas
sumber
Sangat mudah untuk mendapatkan nomor port dari PID di Windows.
Berikut ini adalah langkah-langkahnya:
Buka menjalankan → ketik cmd → tekan Enter.
Tulis perintah berikut ...
(Catatan: Jangan sertakan tanda kurung siku.)
Tekan Enter...
Kemudian cmd akan memberi Anda detail layanan yang berjalan di port tersebut bersama dengan PID.
Buka Task Manager dan tekan tab layanan dan cocokkan PID dengan cmd, dan hanya itu.
sumber
Cukup buka perintah shell dan ketik (katakan port Anda 123456):
Anda akan melihat semua yang Anda butuhkan.
Tajuknya adalah:
Ini seperti yang disebutkan di sini .
sumber
findstr 123456
(tanpa tanda kutip) ataufind "123456"
(dengan tanda kutip). (@Josh)Untuk mengetahui proses tertentu (PID) yang menggunakan port mana:
Di mana 1234 adalah PID dari proses Anda. [Pergi ke Manajer Tugas → tab Layanan / Proses untuk mengetahui PID aplikasi Anda.]
sumber
-n
menetapkan bendera dua kali.-ano
cukup.Dengan PowerShell 5 di Windows 10 atau Windows Server 2016, jalankan
Get-NetTCPConnection
cmdlet. Saya kira itu juga harus bekerja pada versi Windows yang lebih lama.Output default dari
Get-NetTCPConnection
tidak menyertakan ID Proses dengan alasan tertentu dan itu agak membingungkan. Namun, Anda selalu bisa mendapatkannya dengan memformat output. Properti yang Anda cari adalahOwningProcess
.Jika Anda ingin mengetahui ID proses yang mendengarkan pada port 443, jalankan perintah ini:
Format output ke tabel dengan properti yang Anda cari:
Jika Anda ingin mengetahui nama proses, jalankan perintah ini:
sumber
Jika Anda ingin menggunakan alat GUI untuk melakukan ini ada TCPView Sysinternals .
sumber
Ketikkan perintah:
netstat -aon | findstr :DESIRED_PORT_NUMBER
Misalnya, jika saya ingin mencari port 80:
netstat -aon | findstr :80
Jawaban ini awalnya dikirim ke pertanyaan ini .
sumber
Netstat:
proses -o memiliki
Alat Currports membantu untuk mencari dan memfilter
sumber
Buka prompt perintah - mulai → Jalankan →
cmd
, atau mulai menu → Semua Program → Aksesoris → Prompt Perintah .Tipe
Ganti
[port_number]
dengan nomor port aktual yang ingin Anda periksa dan tekan Enter.Tipe
Ganti
[PID]
dengan nomor dari langkah di atas dan tekan Enter.sumber
netstat -ao
dannetstat -ab
memberi tahu Anda aplikasi, tetapi jika Anda bukan administrator sistem Anda akan mendapatkan "Operasi yang diminta membutuhkan peningkatan".Ini tidak ideal, tetapi jika Anda menggunakan Proses Explorer Sysinternals Anda dapat pergi ke properti proses tertentu dan melihat pada tab TCP untuk melihat apakah mereka menggunakan port yang Anda minati. Ini sedikit jarum dan tumpukan jerami hal, tapi mungkin itu akan membantu seseorang ...
sumber
Saya merekomendasikan CurrPorts dari NirSoft.
CurrPorts dapat memfilter hasil yang ditampilkan. TCPView tidak memiliki fitur ini.
Catatan: Anda dapat mengklik kanan koneksi soket proses dan memilih "Tutup Koneksi TCP yang Dipilih" (Anda juga dapat melakukan ini di TCPView). Ini sering memperbaiki masalah konektivitas yang saya miliki dengan Outlook dan Lync setelah saya beralih VPN. Dengan CurrPorts, Anda juga dapat menutup koneksi dari baris perintah dengan parameter "/ tutup".
sumber
Solusi single-line yang membantu saya adalah yang ini. Cukup ganti 3000 dengan port Anda:
Sunting: Diubah
kill
keStop-Process
untuk bahasa yang lebih mirip PowerShellsumber
Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process
Ikuti alat ini: Dari cmd :
C:\> netstat -anob
dengan hak istimewa Administrator .Penjelajah Proses
Memproses Dump
Monitor Port
Semua dari sysinternals.com.
Jika Anda hanya ingin tahu proses yang berjalan dan utas di bawah setiap proses, saya sarankan untuk mempelajari
wmic
. Ini adalah alat baris perintah yang luar biasa, yang memberi Anda lebih dari yang Anda tahu.Contoh:
Perintah di atas akan menampilkan daftar semua proses secara singkat setiap 5 detik. Untuk mengetahui lebih lanjut, Anda bisa menggunakan
/?
perintah windows, misalnya,Dan seterusnya dan seterusnya. :)
sumber
Menggunakan:
Ini menunjukkan PID dari proses yang berjalan pada port tertentu.
Ingat ID proses dan buka Task Manager dan layanan atau tab detail dan akhiri proses yang memiliki PID yang sama.
Dengan demikian Anda dapat mematikan proses yang berjalan pada port tertentu di Windows.
sumber
Bagi yang menggunakan PowerShell, coba
Get-NetworkStatistics
:sumber
Secara terprogram, Anda memerlukan barang dari iphlpapi.h , misalnya GetTcpTable2 (). Struktur seperti MIB_TCP6ROW2 berisi PID pemilik.
sumber
Menggunakan PowerShell ... ... ini akan menjadi teman Anda (ganti 8080 dengan nomor port Anda):
Output sampel
Jadi dalam contoh ini tnslsnr.exe (database OracleXE) mendengarkan pada port 8080.
Penjelasan cepat
Select-String
digunakan untuk memfilter keluaran panjangnetstat
untuk jalur yang relevan.-Pattern
menguji setiap baris terhadap ekspresi reguler.-Context 0,1
akan menampilkan 0 garis depan dan 1 garis trailing untuk setiap kecocokan pola.sumber
Untuk Windows, jika Anda ingin menemukan hal-hal mendengarkan atau terhubung ke port 1234, jalankan yang berikut ini di prompt cmd:
sumber
Gunakan skrip batch di bawah ini yang mengambil nama proses sebagai argumen dan memberikan
netstat
output untuk proses tersebut.sumber
Berdasarkan jawaban dengan info dan kill , bagi saya itu berguna untuk menggabungkan mereka dalam satu perintah . Dan Anda dapat menjalankan ini dari cmd untuk mendapatkan informasi tentang proses yang mendengarkan pada port yang diberikan (contoh 8080):
Atau jika Anda ingin membunuhnya:
Anda juga dapat menempatkan perintah itu ke file bat (akan sedikit berbeda - ganti
%i
untuk%%i
):Mengajukan
portInfo.bat
Mengajukan
portKill.bat
Maka Anda dari cmd Anda dapat melakukan ini:
portInfo.bat 8080
atau
portKill.bat 8080
sumber
.\portInfo.bat 800
di PowerShell ia memberikan sesuatu seperti ini:C:\work>for /F "tokens=3 delims=LISTENING" %i in ('netstat -ano | findStr "800" | findStr "["') do (tasklist /fi "pid eq %i" ) C:\work>(tasklist /fi "pid eq 4" ) Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System 4 Services 0 1,820 K
portInfo.bat
dalam terminal PowerShell, kemudian dieksekusi.\portInfo.bat 8080
. Outputnya hanya isi dari file batch. Sangat mungkin aku menghadap sesuatu. Catatan, saya menggunakan PowerShell 6.2.3 pada Windows 10. Saya juga mencobanya dalam prompt perintah biasa, tetapi hasilnya sama: Output dari isi skrip. Saya yakin saya kehilangan sepotong informasi penting untuk membuat ini bekerja./nh
:@tasklist /nh /fi "pid eq %i"
? Dan tepatnya pintu:Findstr ":8080"
Dalam kasus saya port (3000) tidak digunakan sama sekali dan tidak terlihat di netstat. Tapi! Uninstaller Docker untuk Windows telah mengatasi masalah ini.
sumber