当发生错误(内存溢出等)时,windows是否会优雅地停止服务或杀死它们?



首先抱歉我的英语很差。我真的不知道如何表达这个问题,但我可以向你解释我的意图,这样可能有助于你更好地理解我。

我正在开发一个工具,当windows服务出现故障时通知你。

我遵循的确切逻辑是:

  1. 当服务正常停机时记录一个事件,您可以在windows事件查看器中看到。我已经创建了一个计划任务,当服务根据windows事件日志(感谢XML过滤器)停止时将被触发。
  2. 此任务触发一个powershell脚本,该脚本向一个电报机器人发送请求,该电报机器人将在服务终止时通知我。

当我手动停止服务(From service)时,这个过程工作得很好。msc或Powershell的停止服务)。目标是对服务进行实时跟踪,并在本例中正常工作。

问题来了:我不能强迫服务崩溃,以查看它是否在windows事件查看器中记录信息。

我的问题是:

  1. 如果发生错误,窗口会优雅地关闭服务(如使用Stop-Service时),还是会杀死进程而不注册任何日志信息(如使用taskkill/f时)?
  2. 还有其他建议吗?有没有另一种方法可以实时跟踪windows服务并触发脚本,而不需要每隔一定时间运行一次循环?

希望你们都能理解我:)

如果一个服务崩溃了,你仍然应该在Windows Logs>系统将担任"服务控制经理"and事件ID应该是7031或7032或7034。

所以你可以为这些添加一个过滤器,并让你的PowerShell脚本也在这些类型的事件上运行。

最新更新