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을 사용하여 중단된 서비스의 대기 체인 분석
  • Process Explorer를 사용하여 중단된 서비스 종료

TaskKill을 사용하여 멈춘 Windows 서비스를 강제 종료하는 방법

중단된 서비스를 중지하는 가장 쉬운 방법은 기본 제공되는 taskkill을 사용하는 것입니다. 명령줄 도구. 우선 PID를 찾아야 합니다. (프로세스 식별자) 서비스. 예를 들어 Windows 업데이트 서비스를 살펴보겠습니다. 시스템 이름은 wuauserv입니다. (services.msc의 서비스 속성에서 이름을 확인할 수 있습니다. 콘솔).

특히 Windows Server 2012 R2 및 2016에 업데이트를 설치한 후 서버를 다시 시작할 때 Windows Modules Installer 서비스가 중단되는 것은 매우 일반적입니다.중요 . 세심. 중요한 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"

그 후 Stopping 상태의 스택에 있는 서비스가 중지되어야 합니다.

또한 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 서비스 종료

프로세스 중지 cmdlet을 사용하면 발견된 모든 서비스의 프로세스를 종료할 수 있습니다. 다음 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 대신 새로운 PowerShell Core 6.x/7.x의 cmdlet. 스크립트의 첫 번째 명령을 다음으로 대체:

$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를 찾아 종료합니다.

Process Explorer를 사용하여 중단된 서비스 종료

로컬 관리자라도 SYSTEM 계정으로 실행되는 일부 프로세스를 종료할 수 없습니다. 사실 관리자 계정에는 일부 프로세스 또는 서비스에 대한 권한이 없습니다. 이러한 프로세스(서비스)를 중지하려면 로컬 Administrators 그룹에 서비스(프로세스)에 대한 권한을 부여한 후 종료해야 합니다. 이렇게 하려면 두 개의 작은 도구가 필요합니다. psexec.exeProcessExplorer (Microsoft 웹사이트에서 사용 가능).

  1. 시스템 권한(runas SYSTEM)으로 ProcessExplorer를 시작하려면 다음 명령을 사용하십시오. PSExec -s -i ProcExp.exe
  2. 프로세스 탐색기 프로세스 목록에서 중단된 서비스 프로세스를 찾아 속성을 엽니다.
  3. 서비스로 이동 탭에서 서비스를 찾고 권한을 클릭합니다. 단추; 중지 또는 시작 시 멈추는 Windows 서비스 종료
  4. 관리자 에 대한 서비스 권한에서 모든 권한 부여 그룹. 변경 사항을 저장합니다. 중지 또는 시작 시 멈추는 Windows 서비스 종료
  5. 이제 서비스 프로세스를 중지하려고 합니다. 서비스에 대한 권한은 다시 시작될 때까지 일시적으로 부여됩니다. 서비스에 대한 영구 권한을 부여하려면 Windows 서비스에 대한 권한 설정 문서를 따르십시오.