Benar-benar mematikan proses di Windows

375

Kadang-kadang sebuah program pada mesin Windows menjadi gila dan hanya hang. Jadi saya akan memanggil task manager dan tekan tombol "End Process" untuk itu. Namun, ini tidak selalu berhasil; jika saya mencobanya cukup kali maka biasanya akan mati pada akhirnya, tetapi saya benar-benar ingin dapat langsung membunuhnya. Di Linux saya hanya bisa kill -9menjamin bahwa suatu proses akan mati.

Ini juga dapat digunakan untuk menulis skrip batch dan menulis skrip batch adalah pemrograman.

Apakah ada beberapa program atau perintah yang datang dengan Windows yang akan selalu mematikan proses? Aplikasi pihak ketiga gratis akan baik-baik saja, meskipun saya lebih suka untuk dapat melakukan ini pada mesin yang saya duduki untuk pertama kalinya.

Eli Courtwright
sumber
19
Proses menyimpang adalah masalah yang cukup umum dalam pemrograman yang saya harus tidak setuju; ini bukan pertanyaan di luar topik.
Dan Moulding
19
Saya berurusan dengan manajemen proses setiap hari sebagai pengembang. Ini benar-benar topik untuk saya!
John Fitzpatrick
14
Saya sangat menyarankan untuk tidak menghapus pertanyaan ini. +195 dan ini adalah hit google yang sangat awal untuk pertanyaan yang terlibat.
Joshua
2
"kecuali mereka secara langsung melibatkan alat yang digunakan terutama untuk pemrograman" Saya mengalami masalah ini sehubungan dengan Visual Studio menjaga proses berjalan yang membuat saya tidak dapat membunuhnya. Closing Visual Studio membantu membunuh proses yang bermasalah.
Joakim
Anda dapat menggunakan cmdlet Stop-Process powersell .
Rosberg Linhares

Jawaban:

318

"End Process" pada panggilan Processes-Tab TerminateProcessyang merupakan cara paling pamungkas yang diketahui Windows untuk mematikan suatu proses.

Jika tidak hilang, saat ini terkunci menunggu pada beberapa sumber daya kernel (mungkin driver kereta) dan tidak ada (kekurangan reboot) yang dapat Anda lakukan untuk membuat proses pergi.

Lihatlah entri blog ini dari wayback ketika: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

Sistem berbasis Unix seperti Linux juga memiliki masalah di mana proses dapat bertahan hidup kill -9jika mereka dalam apa yang dikenal sebagai "Uninterruptible sleep" (diperlihatkan oleh top dan ps sebagai state D) di mana titik proses tidur dengan sangat baik sehingga mereka tidak dapat memproses sinyal yang masuk (yang killartinya - mengirim sinyal).

Biasanya, tidur yang tidak terputus tidak akan bertahan lama, tetapi seperti pada Windows, driver yang rusak atau program userpace yang rusak ( vforktanpa exec) dapat berakhir dengan tidur Dselamanya.

pilif
sumber
29
Sementara saya benci bahwa ini adalah jawaban yang benar, tidak ada keraguan dalam pikiran saya bahwa itu lebih benar daripada taskkill di bawah ini .... driver kereta bodoh!
codetaku
6
Sedikit kurang menjengkelkan daripada reboot adalah untuk log off / on lagi. Masih kehilangan pekerjaan, tapi mungkin tidak terlalu banyak waktu.
awidgery
8
itu disebabkan oleh beberapa proses lain memastikan proses awal selalu berjalan. Anda membunuh mesin lama Anda dan yang baru telah dimulai oleh pengawas
pilif
8
Jawaban ini sama sekali tidak benar. "End Process" bukan cara yang paling utama untuk mematikan proses, karena tidak dapat mematikan proses layanan (misalnya). taskkill /fadalah yang paling utama.
user626528
5
TaskKill / f hanya memanggil TerminateProcessAPI. Itu melakukan hal yang persis sama dengan Task Manager (meskipun, Anda benar tentang itu, dengan hak istimewa yang ditingkatkan).
pilif
233
taskkill /im myprocess.exe /f

"/ F" adalah untuk "kekuatan". Jika Anda mengetahui PID, maka Anda dapat menentukannya, seperti pada:

taskkill /pid 1234 /f

Banyak pilihan lain yang mungkin, cukup ketik taskkill /? untuk mereka semua. Opsi "/ t" membunuh proses dan proses anak apa pun; yang mungkin bermanfaat bagi Anda.

JosephStyons
sumber
10
Hanya sebuah catatan. Ini sangat berguna jika Anda menulis skrip untuk manajemen server. kill.exe (dari NT Res kit) akan menyebabkan program keluar, tetapi jika Anda memiliki crash handler yang diinstal (terutama windbg), itu dapat menyebabkan masalah karena OS akan melihat proses yang terbunuh telah macet, dan berusaha untuk men-debug Itu. Taskkill tidak akan menghasilkan masalah ini.
Aaron
6
@ lzprgmr - taskkill dan "end task" mungkin keduanya memanggil fungsi windows yang mendasarinya sama "TerminateProcess" msdn.microsoft.com/en-us/library/windows/desktop/…
JosephStyons
60
Ini tidak lebih efektif daripada "proses akhir" dari task manager.
Eddie
2
Saya telah mencoba untuk secara paksa membunuh SugarSync.exe tanpa harus reboot (sejak memulai ulang SugarSync dua kali sebelum benar-benar berjalan membuatnya bekerja lagi), tetapi taskkill / T / F / IM SugarSync.exe tidak bekerja - meskipun ia mengklaim "SUKSES"
Jon Coombs
2
TERIMA KASIH! taskkill /pid 1234 /ftidak berfungsi ketika Tugas Akhir menolak untuk bekerja! WOW!
Hendy Irawan
37

Peretas Proses memiliki banyak cara untuk mematikan suatu proses.

(Klik kanan prosesnya, lalu buka Miscellaneous-> Terminator.)

pengguna541686
sumber
5
Tidak dapat menemukan banyak hal yang menguatkan, karena mencari ini hanya menghasilkan jutaan UNDUH GRATIS !!! tautan. Tapi itu melakukan apa yang dikatakannya, risiko virus dan semuanya.
bwerks
2
@Nuzzolilo: Tentu! Klik kanan prosesnya, buka Miscellaneous-> Terminator.
user541686
6
Tidak bekerja pada semua proses, saya punya satu yang selamat dari semua opsi.
Zitrax
7
Itu bluescreened komputer saya. Proses hilang setelah reboot. Kerja bagus ... -.- '
Pedro Oliveira
5
Sayangnya Terminator dihapus dalam v2.39 :(
raymai97
23

JosepStyons benar. Buka cmd.exe dan jalankan

taskkill /im processname.exe /f

Jika ada kesalahan yang mengatakan,

GALAT: Proses "process.exe" dengan PID 1234 tidak dapat dihentikan. Alasan: Akses ditolak.

kemudian coba jalankan cmd.exe sebagai administrator.

Dhruv Chandhok
sumber
9
Berjalan sebagai administrator, kesalahan berubah. Sekarang tertulis: ERROR: The process with PID 17888 (child process of PID 17880) could not be terminated. Reason: There is no instance of the task.dan mengacu pada PID 17880 induk. Karena tidak dapat menemukan orangtua, ia tidak akan membunuh anak yatim. :(
Jesse Chisholm
1
"Anda juga harus membunuh proses anak jika ada yang ingin membunuh proses Anda dengan sukses" coba stackoverflow.com/questions/12528963/…
Dhruv Chandhok
Dalam kasus saya, proses zombie yang saya suruh untuk dibunuhnya adalah satu - satunya anak dan tidak ada orang tua, meskipun zombie masih berpikir itu memiliki orang tua. Dalam kasus saya, diselesaikan dengan menggunakan jalur Sistem Perbaikan Lanjut Pengaturan Windows 8.1, tetapi membatalkan dari benar-benar menghapus disk, dan hanya melakukan reboot paksa penuh. Shutdown dan reboot reguler benar-benar tidur / hibernasi (untuk menghemat waktu saat startup). Non-sepele membuatnya melakukan shutdown penuh .
Jesse Chisholm
"Akses ditolak" berarti bahwa proses tersebut sudah dalam proses ditutup. Misalnya jika Anda baru saja mencoba untuk menutupnya sebelumnya. Anda harus menunggu sampai ditutup.
Pacerier
hasil taskkill di bawah hak admin: Akses ditolak.
amuliar
22

Dapatkan proses penjelajah dari sysinternals (sekarang Microsoft)

Process Explorer - Windows Sysinternals | Microsoft Documents

Iain Holder
sumber
15
Itu memang memberikan lebih banyak info (dan beberapa kemampuan terbatas untuk mencari pegangan kunci) tapi saya tidak lagi berhasil membunuh tugas dengan itu daripada dengan Task Manager dasar. Proses tertentu (seperti anti-virus, dan SugarSync.exe) menolak untuk mati.
Jon Coombs
15

Salah satu trik yang berfungsi dengan baik adalah melampirkan debugger dan kemudian keluar dari debugger.

Pada XP atau Windows 2003 Anda dapat melakukan ini menggunakan ntsd yang keluar dari kotak:

ntsd -pn myapp.exe

ntsd akan membuka jendela baru. Cukup ketik 'q' di jendela untuk keluar dari debugger dan keluarkan prosesnya.

Saya sudah tahu ini berfungsi bahkan ketika task manager tampaknya tidak dapat mematikan proses.

Sayangnya ntsd telah dihapus dari Vista dan Anda harus menginstal alat debbugging (gratis) untuk windows untuk mendapatkan debugger yang sesuai.

Rob Walker
sumber
1
Terima kasih BANYAK untuk ini. Tambahkan "-c q" (tanpa tanda kutip) ke autoquit, yang membuatnya menjadi pembunuh proses yang ideal.
Joanis
2
Ketika Visual Studio dan aplikasi yang sedang di-debug sama-sama hang, pasang dan bunuh instance VS. Pembunuh bisa menjadi contoh baru VS, yang kemudian dapat membuka proyek lama dan memungkinkan Anda untuk terus bekerja.
Bruno Martinez
Saya tidak tahu cara mengunduh apa pun dari tautan itu selain winsdk_web.exeyang tidak menghasilkan apa-apa.
endolith
Anda sekarang bisa mendapatkannya di Windows 10 SDK dengan menjalankan installer dan kemudian hapus centang semuanya kecuali "Alat Debugging untuk Windows" ( docs.microsoft.com/en-us/windows-hardware/drivers/debugger/… )
Coburn
6

mengatur perintah AT untuk menjalankan task manager atau proses explorer sebagai SISTEM.

AT 12:34 /interactive "C:/procexp.exe"

Jika proses explorer ada di drive C root Anda maka ini akan membukanya sebagai SISTEM dan Anda dapat membunuh proses apa pun tanpa mendapatkan akses yang ditolak kesalahan. Tetapkan ini seperti satu menit di masa depan, maka akan muncul untuk Anda.

David Ruark
sumber
4
Saya mendapatkan peringatan berikut saat mencoba ini, jadi sepertinya tidak lagi berfungsi: "Peringatan: Karena peningkatan keamanan, tugas ini akan berjalan pada waktu yang diharapkan tetapi tidak secara interaktif. Gunakan utilitas schtasks.exe jika tugas interaktif diperlukan ('schtasks /? 'untuk detail). "
WhiteKnight
0

Ketika akses ntsd ditolak, coba:

ZeroWave dirancang untuk menjadi alat sederhana yang akan memberikan penghentian bertingkat berbagai jenis proses.

ZeroWave juga merupakan program yang mudah digunakan karena pemasangannya yang sederhana dan antarmuka grafisnya yang sangat ramah.

ZeroWave memiliki tiga mode terminasi dan dengan mode "GILA" dapat menghentikan segala jenis proses yang dapat berjalan pada Windows.

Tampaknya ZeroWave tidak dapat membunuh avp.exe

diyism
sumber
0

FYI Anda kadang-kadang dapat menggunakan SYSTEM atau Trustedinstaller untuk menghentikan tugas;)

google quickkill_3_0.bat

sc config TrustedInstaller binPath= "cmd /c TASKKILL /F  /IM notepad.exe
sc start "TrustedInstaller"
RmccurdyDOTcom
sumber