Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

停止または開始でスタックするWindowsサービスを強制終了します

Stopping」でスタックされているWindowsサービスプロセスを手動で強制終了する方法 」または「Starting " 州?ほとんどのWindows管理者は、サービスを開始/停止/再起動しようとすると問題に直面しますが、停止でスタックします。 (または開始 ) スターテス。サービス管理コンソール(services.msc)からこのサービスを停止することはできません )、このサービスのすべてのコントロールボタンが非アクティブになる(グレー表示)ため。最も簡単な方法はWindowsを再起動することですが、常に受け入れられるとは限りません。システムを再起動せずに、スタックしたWindowsサービスまたはプロセスを強制的に強制終了できる別の方法を見てみましょう。

停止または開始でスタックするWindowsサービスを強制終了します

サービスを停止しようとしてから30秒以内にサービスが停止しない場合、Windowsは次のメッセージを表示します:

Windows Could not stop the xxxxxx service on Local Computer
Error 1053: The service did not respond in a timely fashion.
サービスコントロールマネージャーがサービスの開始または停止を待機するタイムアウトは、 ServicesPipeTimeoutを使用して変更できます。 レジストリパラメータ。指定されたタイムアウト内にサービスが開始されない場合、Windowsはイベントビューアにエラーを送信します(イベントID:7000、7009、7011、タイムアウトに達した30000ミリ秒 )。このタイムアウトを60秒に増やすことができます。例:

reg add HKLM\SYSTEM\CurrentControlSet\Control /v ServicesPipeTimeout /t REG_SZ /d 600000 /f

これは、すべてのプロセスを適切に終了してファイルを閉じるのに十分な時間がない重いサービス(MS SQL Serverなど)を開始/停止する場合に役立ちます。

コマンドプロンプトからこのようなサービスを停止しようとすると、次のようになります。net stop wuauserv 、メッセージが表示されます:

The service is starting or stopping. Please try again later.

停止または開始でスタックするWindowsサービスを強制終了します

または:

Windows could not stop the Service on Local Computer.
[SC] ControlService Error 1061: The service cannot accept control messages at this time.

内容:

  • TaskKillを使用してスタックしたWindowsサービスを強制的に強制終了するにはどうすればよいですか?
  • PowerShellでスタックしたWindowsサービスを強制的に停止する
  • ResMonを使用したハングサービスの待機チェーンの分析
  • ProcessExplorerを使用してハングしたサービスを強制終了する

TaskKillを使用してスタックしたWindowsサービスを強制的に強制終了する方法

スタックしたサービスを停止する最も簡単な方法は、組み込みの taskkillを使用することです。 コマンドラインツール。まず、 PIDを見つける必要があります (プロセス識別子)サービスの。例として、WindowsUpdateサービスを見てみましょう。そのシステム名はwuauservです。 (名前はservices.mscのサービスプロパティで確認できます コンソール)。

サーバーを再起動すると、特にWindows Server2012R2および2016に更新プログラムをインストールした後にWindowsMo​​dulesInstallerサービスがハングすることがよくあります。重要 。行き届きます。重要なWindowsサービスを強制的に終了すると、BSODまたは予期しないシステムの再起動が発生する可能性があります。

昇格したコマンドプロンプトでこのコマンドを実行します(重要です。そうしないと、アクセス拒否エラーが表示されます):
sc queryex wuauserv
この場合、wuauservサービスのPIDは9186です。
PID 9186でスタックしたプロセスを強制終了するには、次のコマンドを実行します。

taskkill /PID 9168 /F

停止または開始でスタックするWindowsサービスを強制終了します

SUCCESS: The process with PID 9168 has been terminated.

このコマンドは、サービスプロセスを強制的に終了します。これで、sc start servicenameを使用してサービスを開始できます。 コマンドまたはサービス管理コンソールを介して

サービスプロセスのPIDを手動でチェックしなくても、ハングしたサービスをよりエレガントに停止できます。 taskkillツールには/FIがあります オプション。これにより、フィルターを使用して必要なサービスまたはプロセスを選択できます。次のコマンドで特定のサービスを強制終了できます:

taskkill /F /FI "SERVICES eq wuauserv"

または、次のコマンドを使用して、サービス名をすべてスキップし、ハング状態のすべてのサービスを強制終了することができます。

taskkill /F /FI "status eq not responding"

その後、停止状態のスタックであるサービスは停止するはずです。

taskkillユーティリティを使用して、リモートコンピュータのハングサービスを強制的に停止することもできます。

taskkill /S mun-fs01 /F /FI "SERVICES eq wuauserv"

PowerShellでスタックしたWindowsサービスを強制的に停止する

PowerShellを使用して、サービスを強制的に停止することもできます。次のコマンドを使用すると、停止状態のサービスのリストを取得できます。

Get-WmiObject -Class win32_service | Where-Object {$_.state -eq 'stop pending'}

または開始状態:

Get-WmiObject -Class win32_service | Where-Object {$_.state -eq 'start pending'}

停止または開始でスタックするWindowsサービスを強制終了します

停止プロセス コマンドレットを使用すると、見つかったすべてのサービスのプロセスを終了できます。次のPowerShellスクリプトは、Windowsでスタックしているすべてのサービスプロセスを終了します。

$Services = Get-WmiObject -Class win32_service -Filter "state = 'stop pending'"
if ($Services) {
foreach ($service in $Services) {
try {
Stop-Process -Id $service.processid -Force -PassThru -ErrorAction Stop
}
catch {
Write-Warning -Message "Error. Error details: $_.Exception.Message"
}
}
}
else {
Write-Output "No services with 'Stopping'.status"
}

停止または開始でスタックするWindowsサービスを強制終了します

Get-CimInstanceを使用する必要があります Get-WmiObjectの代わりに 新しいPowerShellCore6.x/7.xのコマンドレット。スクリプトの最初のコマンドを次のように置き換えます:

$Services = Get-CimInstance -Class win32_service | where-Object state -eq 'stop pending'

ResMonを使用したハングサービスの待機チェーンの分析

resmon.exe を使用して、サービスがハングする原因となったプロセスを検出できます。 (リソースモニター)。

  1. [リソースモニター]ウィンドウで、[CPU]タブに移動し、ハングしたサービスプロセスを見つけます。
  2. アイテムを選択しますウェイトチェーンの分析 コンテキストメニューから。 停止または開始でスタックするWindowsサービスを強制終了します
  3. 新しいウィンドウで、プロセスが別のプロセスを待機していることがわかります。プロセスを終了します。 svchost.exeまたは別のシステムプロセスを待機している場合は、それを終了する必要はありません。このプロセスの待機チェーンを分析してみてください。 svchost.exeが待機しているプロセスのPIDを見つけて、それを強制終了します。
プロセスエクスプローラーを使用してハングしたサービスを強制終了する

ローカル管理者でさえ、SYSTEMアカウントで実行されている一部のプロセスを終了することはできません。実際のところ、管理者アカウントには、一部のプロセスやサービスに対する権限がありません。このようなプロセス(サービス)を停止するには、サービス(プロセス)へのアクセス許可をローカルのAdministratorsグループに付与してから、それらを強制終了する必要があります。これを行うには、2つの小さなツールが必要になります: psexec.exe およびProcessExplorer (MicrosoftのWebサイトで入手可能)。

  1. システム権限(runas SYSTEM)でProcessExplorerを起動するには、次のコマンドを使用します: PSExec -s -i ProcExp.exe
  2. Process Explorerのプロセスリストで、スタックしたサービスプロセスを見つけて、そのプロパティを開きます。
  3. サービスに移動します タブをクリックし、サービスを見つけて、権限をクリックします ボタン; 停止または開始でスタックするWindowsサービスを強制終了します
  4. 管理者のサービス権限でフルコントロール権を付与します グループ 変更を保存します。 停止または開始でスタックするWindowsサービスを強制終了します
  5. ここで、サービスプロセスを停止してみてください。サービスのアクセス許可は、サービスが再開されるまで一時的に付与されることに注意してください。サービスに永続的なアクセス許可を付与するには、「Windowsサービスにアクセス許可を設定する」の記事に従ってください。


  1. Windows 11 でサービスを有効または無効にする方法

    多くのアプリケーションと機能は、ユーザー入力を必要とせずにバックグラウンドで実行することにより、すべてのオペレーティング システムのスムーズな実行をサポートします。同じことが、Windows OS の背後にある主要な歯車であるサービスにも当てはまります。これらのコンポーネントにより、ファイル エクスプローラー、Windows Update、システム全体の検索などの基本的な Windows 機能が正しく動作することが保証されます。いつでも問題なく使用できるように準備して準備します。今日は、Windows 11 でサービスを有効または無効にする方法を見ていきます。 Windows 11 でサー

  2. Windows 10 でサービス エラー 1053 を修正する

    PC でサービスを開始しようとして、時間枠内にサービスが応答を拒否した場合、エラー 1053:サービスは適切なタイミングで開始または制御要求に応答しませんでした .カスタム サービスを起動できないさまざまなバリエーションでエラーが発生する可能性があります。残念ながら、カスタム ソフトウェアを開発しようとすると、PC でサービス エラー 1053 が頻繁に発生することを報告している開発者はほとんどいません。このガイドでは、エラー メッセージが表示される理由と、問題を解決するためのトラブルシューティング方法について説明します。それでは、読み続けてください! Windows 10 でサービス エ