Saya akan membahas proses ini berkali-kali. Saya harus mematikan proses pada mesin Windows dan saya tahu port-nya. Biasanya langkah-langkahnya adalah sebagai berikut: Temukan PID dengan melihat port (contoh port 8084) Daftar proses yang berjalan pada port
netstat -a -o -n
Dan kemudian bunuh proses pada port itu dengan perintah berikut
taskkill /F /PID <pid>
Apakah ada hal seperti pipa atau sejenisnya yang dapat saya gunakan pada OS Windows untuk menjalankan perintah ini dalam satu baris !?
findstr
(Windowsgrep
). Sebagai contoh:netstat -a -o -n | findstr "LISTENING" | findstr ":135"
. Mungkin ini membuat Anda selangkah lebih dekat;)findstr
: mungkin cocok dengan nomor port lokal atau jarak jauh. (Menerima bahwa Q tidak menentukan yang mana.)Jawaban:
Keduanya
cmd.exe
dan pipa dukungan PowerShell dari satu perintah ke perintah lainnya. Dalam PowerShell sesuatu seperti (ini harus berada pada satu baris pada baris perintah, atau gunakan `untuk mengawal baris baru dalam skrip):Dimana:
Select -skip 4
melompati empat baris tajuk pertama. (Select
kependekan dariSelect-Object
digunakan untuk melakukan SQL SELECT seperti proyek objek.%
kependekanForeach-Object
yang melakukan blok skrip pada setiap objek ($_
) di dalam pipa dan mengeluarkan hasil dari blok skrip ke pipa. Ini dia pertama-tama memecah input menjadi array bidang dan kemudian membuat objek segar dengan dua propertiOriginal
dari stringnetstat
danFields
array yang baru saja dibuat.?
kependekan dariWhere-Object
filter mana yang didasarkan pada hasil dari blok skrip. Di sini cocok dengan regex pada akhir bidang kedua (semua wadah PowerShell berbasis nol).(Semua diuji kecuali elemen terakhir: Saya tidak ingin memulai proses mematikan :-)).
Dalam praktiknya saya akan menyederhanakan ini, misalnya. mengembalikan hanya 0 atau PID dari yang pertama
foreach
(yang akan dirancang untuk mengabaikan header) dan memfilter pada nilai tidak nol sebelum memanggiltaskkill
. Ini akan lebih cepat untuk mengetik tetapi lebih sulit untuk diikuti tanpa mengetahui PowerShell.sumber
netstat
. Ini menyebabkan kesalahan (mungkin tidak berbahaya) dariERROR: The process "12345" not found.
.taskkill /F /PID [PID]
. Dengan itu, seseorang dapat secara manual membunuh tugas selama mereka memiliki cara untuk mendapatkan PID.Buka command prompt dan jalankan:
Jika Anda ingin melakukannya di .bat, ganti % a untuk %% a .
Jika Anda hanya ingin membunuh yang mendengarkan di append app (^ | find "LISTENING") di akhir find lainnya.
sumber
Berikut adalah fungsi yang mudah digunakan yang dapat Anda gunakan:
https://github.com/majkinetor/posh/blob/master/MM_Network/Stop-ProcessByPort.ps1
sumber