次のコマンドでシャットダウンできるはずのクラッシュしたWebサーバーがあります。
net stop https-myWebserver
ただし、次のエラーが表示されます(Windows 7 64ビット)。
サービスが開始または停止しています。後でもう一度やり直してください。
サービスを強制的に停止/すぐに終了するにはどうすればよいですか?サーバーの再起動を避けたいです。
タスクマネージャを介してそれを強制終了できるはずです。
Right-click on taskbar -> Start Task Manager
[プロセス]タブの下にある場合:
Right click and select "End Process"
プロセスの下に表示されない場合(または、殺したいサービスのプロセスがどれかわからない場合)、
[プロセス]タブで
Check "Show processes from all users" in the lower left
Then "View" menu and choose "Select Columns"
Check "PID" and hit OK
Go to the services tab to find the PID of the service you want to kill
Go back to Processes tab and Right-click -> End Process
サービスのPIDを見つけて、強制終了する必要があります。
次のコマンドを使用してPIDを見つけます:
tasklist /FI "services eq https-myWebserver"
PID番号を取得したら、タスクマネージャからプロセスを強制終了するか、taskkillを使用します。
ここの完全な詳細: http://www.itprostuff.com/articles/find-pid-service.html
Windows管理フレームワーク3.0(powershell 3)以降をお持ちの場合は、Powershellワンライナーをご覧ください。
Stop-Service -Name "https-myWebserver" -Force
Start-ServiceコマンドとRestart-Serviceコマンドもありますが、Start-Serviceコマンドには-forceスイッチは必要ないため、ありません。
Mike RobbinsのPowershell Advanced関数 ブログ
function Stop-PendingService {
<#
.SYNOPSIS
Stops one or more services that is in a state of 'stop pending'.
.DESCRIPTION
Stop-PendingService is a function that is designed to stop any service
that is hung in the 'stop pending' state. This is accomplished by forcibly
stopping the hung services underlying process.
.EXAMPLE
Stop-PendingService
.NOTES
Author: Mike F Robbins
Website: http://mikefrobbins.com
Twitter: @mikefrobbins
#>
$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 "Unexpected Error. Error details: $_.Exception.Message"
}
}
}
else {
Write-Output "There are currently no services with a status of 'Stopping'."
}
}