Bagaimana cara menghentikan proses layanan hung di Windows secara paksa?

Bagaimana cara menghentikan proses layanan Windows yang macet dalam status berhenti? Saya pikir sebagian besar administrator Windows telah mengalami situasi ketika, ketika mencoba untuk menghentikan (restart) layanan dari antarmuka grafis dari Service Management Console (Services.msc), layanan membeku dan hang dalam status Berhenti. Setelah itu, Anda tidak dapat menghentikan layanan di konsol, karena tombol tindakan layanan menjadi tidak tersedia. Cara termudah adalah memulai ulang server, tetapi ini tidak selalu valid. Pertimbangkan cara alternatif untuk layanan pematian paksa atau proses tanpa perlu me-restart.

Jika dalam 30 detik setelah mencoba menghentikan layanan, itu tidak berhenti, Windows menampilkan pesan:

Gagal menghentikan layanan xxxxxxx Windows di komputer lokal.
Kesalahan 1053. Layanan tidak dapat menghentikan layanan xxxxxx di Komputer Lokal
Kesalahan 1053: Layanan tidak merespons secara tepat waktu.

Ketika mencoba menghentikan layanan seperti itu dengan perintah: net stop wuauserv, sebuah pesan muncul:

Layanan mulai atau berhenti. Silakan coba lagi surat.

Konten:

  • Mengakhiri Layanan Gantung dengan TaskKill
  • Mematikan secara paksa layanan yang digantung dari PowerShell
  • Analisis proses yang digantung menggunakan Resmon
  • Process Explorer: Mengakhiri proses macet dari bawah SYSTEM

Mengakhiri Layanan Gantung dengan TaskKill

Cara termudah untuk mengakhiri layanan yang digantung adalah dengan menggunakan utilitas taskkill. Pertama, Anda perlu menentukan PID (pengidentifikasi proses) dari layanan kami. Sebagai contoh, ambil layanan Pembaruan Windows, nama sistemnya wuauserv (nama dapat ditemukan di properti layanan di konsol services.msc).

Cukup sering, masalah ini terjadi pada layanan Pemasang Modul Windows ketika server restart, terutama setelah menginstal pembaruan pada Windows Server 2012 R2 / 2008 R2.Itu penting. Berhati-hatilah. Pengunduran diri paksa dari proses layanan Windows yang kritis dapat menyebabkan BSOD atau sistem reboot.

Di baris perintah dengan hak administrator (ini penting, jika tidak akan ada kesalahan akses ditolak):
sc queryex wuauserv

Dalam hal ini, proses PID adalah 816.

Untuk memaksa menghentikan proses macet dengan PID 816:

taskkill / PID 816 / F

SUKSES: Proses dengan PID 816 telah dihentikan.

Perintah ini memaksa layanan untuk mengakhiri. Di masa mendatang, Anda dapat kembali ke konsol manajemen layanan dan memulai layanan secara manual (atau sepenuhnya menghapus layanan ini jika tidak diperlukan).

Headshot dari layanan yang digantung dapat dilakukan dengan lebih elegan tanpa harus menentukan PID proses secara manual. Utilitas taskkill memiliki opsi / FI, yang memungkinkan Anda menggunakan filter untuk memilih layanan atau proses yang diperlukan. Anda dapat menghentikan layanan tertentu dengan perintah:

TASKKILL / F / FI "LAYANAN eq wuauserv"

Atau Anda dapat menghilangkan nama layanan sama sekali, menghentikan semua layanan dalam keadaan beku menggunakan perintah:

taskkill / F / FI "status eq not responding"

Setelah itu, layanan yang terjebak dalam status Berhenti harus berhenti.

Mematikan secara paksa layanan yang digantung dari PowerShell

Anda juga dapat menggunakan PowerShell untuk menghentikan layanan. Dengan menggunakan perintah berikut, Anda bisa mendapatkan daftar layanan dalam status Berhenti:

Dapatkan-WmiObject -Class win32_service | Where-Object $ _. Status -eq 'stop pending'

Cmdlet akan membantu menyelesaikan proses untuk semua layanan yang ditemukan. Berhenti-Proses. Dengan menggabungkan kedua operasi dalam satu lingkaran, kami mendapatkan skrip yang secara otomatis menghentikan semua proses layanan yang ditangguhkan dalam sistem:

$ Services = Dapatkan-WmiObject -Class win32_service -Filter "state = 'stop pending'"
if ($ Services)
foreach ($ service dalam $ Services)
coba
Stop-Proses -Id $ service.processid -Force -PassThru -ErrorAction Stop

menangkap
Peringatan-Peringatan -Pesan "Kesalahan. Rincian kesalahan: $ _. Pengecualian. Pesan"



selain itu
Tulis-Keluaran "Tidak ada layanan dengan status 'Berhenti'."

Analisis proses yang digantung menggunakan Resmon

Anda dapat mengidentifikasi proses yang menyebabkan layanan membeku menggunakan monitor sumber daya resmon.

  1. Di jendela Resource Monitor, buka tab CPU (CPU) dan temukan proses layanan hung;
  2. Pilih item Analisis Rantai Menunggu (Menganalisis Tunggu Rantai);
  3. Di jendela baru, Anda kemungkinan besar akan melihat bahwa proses lain sedang menunggu Anda. Lengkapi itu. Jika Anda menunggu proses sistem svchost.exe, Anda tidak perlu menghentikannya. Cobalah untuk menganalisis rantai tunggu untuk proses ini. Temukan PID dari proses yang menunggu svchost.exe Anda dan hentikan.

Process Explorer: Mengakhiri proses macet dari bawah SYSTEM

Beberapa proses yang diluncurkan dari bawah SISTEM tidak dapat dihentikan bahkan oleh administrator server lokal. Faktanya adalah bahwa ia mungkin tidak memiliki hak untuk proses atau layanan tertentu. Untuk menyelesaikan proses (layanan) tersebut, Anda perlu memberikan hak kepada Administrator grup lokal untuk layanan (proses), dan kemudian menyelesaikannya. Untuk melakukan ini, kita memerlukan dua utilitas: psexec.exe dan ProcessExplorer (tersedia di situs web Microsoft).

  1. Untuk menjalankan ProcessExplorer dengan hak sistem (SYSTEM), Anda harus memulainya dengan cara ini: PSExec -s -i ProcExp.exe
  2. Dalam daftar proses Process Explorer, temukan proses layanan yang digantung dan buka propertinya;
  3. Buka tab Layanan, temukan layanan Anda dan klik Izin;
  4. Dalam izin layanan, berikan hak Penuh Kontrol untuk sekelompok administrator (Administrator). Simpan perubahan;
  5. Sekarang coba selesaikan proses layanan. Perhatikan bahwa hak atas layanan dan prosesnya diberikan sementara hingga dimulai ulang. Untuk hak permanen atas layanan, lihat Hak Layanan Windows.