0

我想在创建批处理文件以在 Windows 服务器上运行时请求一些帮助,该文件将监视有时会“卡住”并在应该被杀死后逗留的进程。

具体来说,我可以在 PsList 命令 http://technet.microsoft.com/en-us/sysinternals/bb896682.aspx的 Elapsed Time 列中看到进程的“年龄”

Name                Pid Pri Thd  Hnd   Priv        CPU Time    Elapsed Time
FMSCore            4908   8 146  892 750720     0:01:46.221     4:02:15.907
FMSCore            4780   8 144  943 853060     0:00:42.510     4:02:15.348
FMSCore            3532   8 146  878 553784     0:01:30.262     2:04:56.969
FMSCore            5384   8 147  753  45484     0:00:03.198     0:05:11.267
FMSCore            9548   8 133  608  17408     0:00:00.592     0:00:34.298

下一步,我只想杀死超过 4 小时的进程。所以我相信我们需要解析我的 PsList 命令的结果,提取最后一列,解析几个小时,如果我们发现它“足够老”,我们会解析出它的 PID 并杀死它。

如果我们在谈论 bash 或其他一些脚本语言,我想我可以弄清楚,但对于批处理脚本,我不知道。

建议?

(注意:如果需要,我愿意运行 autoit 脚本或其他东西)

4

2 回答 2

1
setlocal ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION
FOR /F "tokens=2,10* skip=8 delims=: " %%A IN ('pslist') DO (
    if %%B GEQ 4 echo should kill pid %%A, elapsedhrs=%%B
)

注意

  • skip=8 是过滤掉 pslist 版权和版本信息,可能是特定于版本的
  • 不适用于文件名中有空格的 exe 文件!
  • 这还将列出系统进程,如 smss、winlogon、svchost 等,你不应该杀死这些(所以,不要将其作为系统运行,如果以提升的管理员身份运行也可能会出现问题)

如果可以接受按 CPU 时间过滤,可以使用一个简单的内置命令:tasklist /FI "CPUTIME ge 04:00:00"

使用 Windows Scripting Host 或 Powershell 解决这个问题可能会更好(使用 WMI 列出进程,这样您将获得实际对象而不必处理字符串)

于 2010-07-23T09:17:49.097 回答
1

所以我实际上自己想出了这个 - 必须使用 AutoIt 和一个额外的过滤器来查看每个进程的命令行参数,然后查看每个进程的经过时间,然后杀死旧的。

这是完整的帖子:

http://zeroasterisk.com/2010/07/23/adobe-connect-fmscore-process-killer/

我们已将 Connect 设置为在 2 小时后使 FMSCore 进程到期,但如果有人仍连接到录音,它将保留旧的僵尸 FMSCore 进程,直到该人断开连接。

它经常发生不起作用 - 并且似乎没有垃圾收集来清理旧的 FMSCore。

所以我们创建了一个简单的 AutoIt 脚本,它可以编译成一个可以工作的 EXE,但它有一些依赖项......</p>

以下依赖项/命令必须全部到位:

  • c:\Windows\system32\pv.exe
  • c:\Windows\system32\pslist.exe
  • c:\Windows\system32\pskill.exe

这个怎么运作

  • 该脚本使用 pv.exe 查找所有具有包含“flvplayerapp”的命令行参数的 FMS Core 进程(仅用于录制的课程)
  • 对于每个返回的进程 ID
  • 它使用 pslist 列出包括进程年龄在内的详细信息
  • 它使用正则表达式匹配查找“运行时间”</li>
  • 如果超过 5 小时(一个可配置的参数),它会使用 pskill 来终止进程。

因此,我们将其设置为每小时计划的任务,它为我们处理垃圾收集。

http://zeroasterisk.com/blog/wp-content/uploads/2010/07/fmscore-killer-source.au3_.txt

于 2010-07-30T21:05:37.953 回答