如何确保任务一直在运行?
我使用 speedfan 来控制风扇,有时它会崩溃或需要重新启动。如果我因为 speedfan 无法正常工作而手动退出它,它不会自动重新打开。
如何使用任务计划程序来确保它始终运行,即使它没有运行?
目前,它设置为每次我登录时运行,并设置为在任务失败时重新启动,但它仍然没有重新打开。
谢谢
答案1
任务计划程序 - 如果任务未运行,则运行该任务
您可以使用类似于下面的批处理脚本并使用任务列表和查找字符串检查 SpeedFan 的 EXE 名称是否正在内存中运行。使用以下逻辑,它将开始如果未发现 EXE 在内存中运行。
批处理脚本示例
确保将该SpeedFan.exe
值替换为启动应用程序时运行的 EXE 文件的实际名称,并且如果该值有所不同,则表示该文件正常运行SET EXEName=SpeedFan.exe
。
您需要确保 EXE 的完整显式路径也符合下面的实际逻辑,因此只需将其(在中SET EXEFullPath=C:\Program Files\SpeedFan\SpeedFan.exe
)替换为应用程序 EXE 的真实路径;在=
符号之后您就可以更改它。
只需安排它每 1 分钟、30 秒使用任务计划程序运行一次,或者按照您希望的频率检查此过程是否正在运行,如果没有运行,则启动它。
@ECHO OFF
SET EXEName=SpeedFan.exe
SET EXEFullPath=C:\Program Files\SpeedFan\SpeedFan.exe
TASKLIST | FINDSTR /I "%EXEName%"
IF ERRORLEVEL 1 GOTO :StartSpeedFan
GOTO :EOF
:StartSpeedFan
START "" "%EXEFullPath%"
GOTO :EOF
答案2
是的,但你首先需要安装系统监视这些类型的事件,因为并非所有程序都这样做。据我所知。
这将使您能够重新启动它在ProcessTerminate
事件中收集的任何应用程序,并在您想要的任何时间重新启动。您不会像使用批处理脚本那样被限制在 30 秒内。
- 喝杯咖啡然后从上面的链接下载。
- 安装
Sysmon.exe -i
DOS
或者PowerShell
。 - 不需要重新启动。
它的作用是找到这里。
总结
系统监视器 (Sysmon) 是一种 Windows 系统服务和设备驱动程序,一旦安装在系统上,就会在系统重启后驻留,以监视系统活动并将其记录到 Windows 事件日志中
现在已安装完毕,您可以在Event Viewer
。
在 Vista 及更高版本事件存储在
Applications and Services Logs/Microsoft/Windows/Sysmon/Operational
在旧系统上事件被写入
System event log
。
在此示例中,我将使用胶粘物和Windows 10 专业版。
注意:在使用任务计划程序中的代码之前,最好先进行测试Event Viewer
。
- 打开
Event Viewer
- 右击
Event Viewer (Local)
Create Custom View...
- 点击
XML tab
- 勾选复选框
Edit query manually
这是胶粘物程序。只需简单修改
C:\Program Files (x86)\Stickies\stickies.exe
即可满足您的需求。我将在下面尽我所能解释每个部分的作用Sysmon
。查询示例:
<QueryList> <Query Id="0" Path="Microsoft-Windows-Sysmon/Operational"> <Select Path="Microsoft-Windows-Sysmon/Operational"> *[EventData[Data[@Name='Image'] = 'C:\Program Files (x86)\Stickies\stickies.exe']] and *[System[(EventID=5)]] </Select> </Query> </QueryList>
(1)
[EventData[Data[@Name='Image'] = 'validFullPath.exe']]
是路径查询。它的作用是搜索程序文件的位置.exe
。这必须是完整路径因为无法使用诸如 之类的通配符*
。(2)
and
是和声明也匹配...(3)
*[System[(EventID=5)
是 的事件 IDProcessTerminate
。(4) 如果操作正确,您应该会在主 GUI 中看到该特定程序上次终止时的进程。如果没有,请打开应用程序并关闭它,您应该会
Number of events:... New event available
在事件查看器 UI 的最顶部看到,按 F5 刷新,现在您应该会在顶部看到一个新的事件条目,一切顺利。- 更多详细信息请参阅活动和事件过滤条目部分系统页。
- 要了解有关事件过滤的更多信息,请参阅维基百科使用 XPath 1.0 进行过滤
- 如果您犯了错误,您将收到此警告信息
The Event Log query specified is invalid
。 - 不用担心,它不会造成任何伤害。再试一次。
现在您已对查询进行了排序。您所要做的就是设置任务计划程序。请参阅下面附图中的步骤。
任务进度表步骤 1-8
最后说明一下,关于图表的第 4 步:
- 根据您的要求设置延迟很重要,例如
2 seconds
就我的情况而言。 - 然后设置
Repeat task...
为 TS 允许的最小值,然后将持续时间稍微延长 2 秒。(按应用测试)。 - 不要使用
Stop all running...
复选框,因为这会导致令人讨厌的停止/启动循环。
我花了一段时间才弄清楚,但我很高兴我做到了!希望你觉得这有用