Bagaimana saya bisa menghapus proses / aplikasi saat ini yang sudah ditetapkan ke port?
Sebagai contoh: localhost:8080
Bagaimana saya bisa menghapus proses / aplikasi saat ini yang sudah ditetapkan ke port?
Sebagai contoh: localhost:8080
Jawaban:
Langkah 1:
Buka cmd.exe (catatan: Anda mungkin perlu menjalankannya sebagai administrator, tetapi ini tidak selalu diperlukan), kemudian jalankan perintah di bawah ini:
netstat -ano | findstr :PORT_NUMBER
(Ganti PORT_NUMBER dengan nomor port yang Anda inginkan, tetapi pertahankan titik dua)
Area yang dilingkari merah menunjukkan PID (pengidentifikasi proses). Temukan PID dari proses yang menggunakan port yang Anda inginkan.
Langkah 2:
Selanjutnya, jalankan perintah berikut:
taskkill /PID PID /F
(Tidak ada titik dua kali ini)
Terakhir, Anda dapat memeriksa apakah operasi berhasil atau tidak dengan menjalankan kembali perintah di "Langkah 1". Jika berhasil, Anda tidak akan melihat hasil pencarian lagi untuk nomor port itu.
taskkill //PID 12552 //F
taskkill /PID PORT_NUMBER /F
Langkah 1 ( jawaban yang sama diterima oleh KavinduWije ):
netstat -ano | findstr :yourPortNumber
Ubah pada Langkah 2 menjadi:
tskill typeyourPIDhere
Catatan : taskkill
tidak berfungsi di beberapa terminal git bash
Dengan alat standar Windows 10:
Buka Windows PowerShell sebagai Administrator
Temukan PID (ProcessID) untuk port 8080:
netstat -aon | findstr 8080
TCP 0.0.0.0:8080 0.0.0.0♥ LISTEN 77777
Bunuh proses zombie:
taskkill /f /pid 77777
di mana "77777" adalah PID Anda
set /p port="Enter port: "
-> Port input FOR /F "tokens=5" %%T IN ('netstat -aon ^| findstr %port% ') DO ( SET /A ProcessId=%%T) &GOTO SkipLine
:SkipLine
-> Ekstrak PID ke dalam variabel taskkill /f /pid %ProcessId%
-> Bunuh tugas cmd /k
-> Biarkan jendela tetap terbuka
Jika Anda menggunakan GitBash
Langkah pertama:
netstat -ano | findstr :8080
Langkah dua:
taskkill /PID typeyourPIDhere /F
( /F
paksa menghentikan proses)
Di Windows PowerShell versi 1 atau lebih baru untuk menghentikan proses pada port 3000 ketik:
Stop-Process (, (netstat -ano | findstr: 3000) .split () | foreach {$ [$ .length-1]}) -Force
Seperti yang disarankan oleh @morganpdx di sini lebih PowerShell-ish, versi yang lebih baik:
Stop-Proses -Id (Dapatkan-NetTCPConnection -LocalPort 3000) .Memiliki Proses -Force
'Stop-Process' is not recognized as an internal or external command,
Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force
Untuk digunakan di baris perintah:
for /f "tokens=5" %a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %a
Untuk digunakan dalam file bat:
for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a
Jika Anda sudah tahu nomor port, mungkin cukup mengirim sinyal terminasi perangkat lunak ke proses (SIGTERM):
kill $(lsof -t -i :PORT_NUMBER)
lsof -nt -i4TCP:9001
juga.
Untuk pengguna Windows, Anda dapat menggunakan alat CurrPorts untuk mematikan port yang sedang digunakan dengan mudah:
Saya menjalankan zookeeper di Windows dan tidak dapat menghentikan ZooKeeper yang berjalan di port 2181 menggunakan zookeeper-stop.sh, jadi coba metode double slash "//" ini ke taskkill. Itu berhasil
1. netstat -ano | findstr :2181
TCP 0.0.0.0:2181 0.0.0.0:0 LISTENING 8876
TCP [::]:2181 [::]:0 LISTENING 8876
2.taskkill //PID 8876 //F
SUCCESS: The process with PID 8876 has been terminated.
Jika Anda menggunakan Terminal Windows maka proses pembunuhan mungkin sedikit kurang membosankan. Saya telah menggunakan terminal windows dan kill PID
berfungsi dengan baik bagi saya untuk mematikan proses pada port karena Terminal Windows baru mendukung perintah bash tertentu. Sebagai contoh:kill 13300
Jadi, proses lengkap akan terlihat seperti ini-
netstat -ano | findstr :PORT
kill PID
Sebagai contoh:
PS C:\Users\username> netstat -ano | findstr :4445
TCP 0.0.0.0:4445 0.0.0.0:0 LISTENING 7368
TCP [::]:4445 [::]:0 LISTENING 7368
PS C:\Users\username> kill 7368
PS C:\Users\username> netstat -ano | findstr :4445
PS C:\Users\username>
Lihat ketika saya mengetik perintah pertama untuk daftar proses pada port itu kembali kosong. Itu berarti semua proses terbunuh sekarang.
kill
. Sakit posting di sini jika saya menemukan.
Jika Anda ingin melakukannya menggunakan Python: centang Apakah mungkin dalam python untuk mematikan proses yang mendengarkan pada port tertentu, misalnya 8080?
Jawaban dari Smunk bekerja dengan baik. Saya ulangi kodenya di sini:
from psutil import process_iter
from signal import SIGTERM # or SIGKILL
for proc in process_iter():
for conns in proc.connections(kind='inet'):
if conns.laddr.port == 8080:
proc.send_signal(SIGTERM) # or SIGKILL
continue
Satu solusi garis menggunakan GitBash :
tskill `netstat -ano | grep LISTENING | findstr :8080 | sed -r 's/(\s+[^\s]+){4}(.*)/\1/'`
Ganti 8080 dengan port yang didengarkan oleh server Anda.
Jika Anda perlu sering menggunakannya, coba tambahkan ~/.bashrc
fungsi Anda:
function killport() {
tskill `netstat -ano | findstr LISTENING | findstr :$1 | sed -r 's/^(\s+[^\s]+){4}(\d*)$/\1/'`
}
dan jalankan saja
killport 8080
Kita dapat menghindari ini dengan me-restart IIS secara sederhana, menggunakan perintah di bawah ini:
IISRESET