我在 Windows 2003 服务器上运行了一个 Windows 服务。右键单击该服务时,在属性选项下,有一个选项用于在服务失败时重新启动该服务。可用的选项适用于第一次、第二次以及任何后续失败。
我尝试使用此选项在服务未运行时重新启动服务,但似乎只有在服务因故障而失败时才会重新启动服务。我遇到的问题是,如果发生故障,服务会发现并“正常”关闭服务。这意味着它没有被重新启动。
有没有办法可以重新启动服务,无论它是由于故障而停止还是正常停止?
谢谢
答案1
对于这种行为不正常的服务,我会创建一个小脚本来检查它是否正在运行,如果没有运行就启动它。然后我会使用计划任务每 5 分钟左右运行一次脚本。
示例脚本(检查后台处理程序服务):
@echo off
Rem Look for the Print Spooler service in the list of started services
net start | find /i "Print Spooler"
Rem if not found, start it and a restart occurred.
if "%errorlevel%"=="1" (
echo Service "Print Spooler" restarted at %time% on %date% by Script %0>>c:\ServiceRestart.Log
net start "Print Spooler"
)
答案2
这是什么服务?我曾经遇到过 MS Fax 服务的一个奇怪问题。我通过检查任务管理器下的进程解决了这个问题,如果列出了该进程,则结束该进程,然后打开命令提示符并输入:
net start faxsvc.exe
您net stop faxsvc.exe
也可以使用它来终止服务。
另一件事是检查依赖关系并重新启动它们,即传真服务所依赖的依赖关系。
编辑:我猜这个可能会有帮助,但我没有很好地理解你的问题。我知道有一个名为 Service Hawk 的程序可用,但它需要付费。另一个想法是匹配一个批处理文件,该文件将每隔一段时间重新启动服务二十秒/分钟/小时/无论服务运行和失败之间的时间间隔有多长。
答案3
这就是答案!
使用以下 Powershell 命令可以检查并启动所需的服务
$A = get-service AdobeARMservice
if ($A.Status -eq "Stopped") {$A.start()} elseIf ($A.status -eq "Running") {Write-Host -ForegroundColor Yellow $A.name "is running"}