我有几台服务器,其中的某个进程经常卡住。我们使用运行 taskkill 命令的 vbs 脚本(以及其他一些命令)终止该进程。问题是进程名称不断变化。有一次,它显示为“FusionLoanSvr.exe”,但最终更改为“Fusion~1.exe”,现在是“Fusion~2.exe”。
进程名称的这种变化迫使我在每次发生时修改脚本,并且它当然不是在所有服务器上一致的。
是否有人知道为什么要使用短名称,为什么它被增加到~2,以及如何阻止它使用短名称或如何通过脚本终止进程,而不必引用任务管理器中看到的确切 EXE 名称?
谢谢!
答案1
嗯嗯。
这是根据我在 IIS 应用程序中看到的类似行为得出的一点(有根据的)猜测。
我认为应用程序第一次由 IIS 启动时,其名称与 EXE 文件相同。
出于某种原因,IIS 生成了该进程的第二个副本。该副本的名称为 ~1.exe。第三个副本的名称为 ~2.exe,依此类推。
产生额外进程的原因可能是第一个进程不再响应。
也可能是因为启动了第二个进程,导致第一个进程挂起。(也许两个进程都试图访问相同的资源,从而导致死锁?)
根据我的经验,这种事情通常是由于 IIS 应用程序池和/或工作线程配置错误造成的。
无论如何:我想到了一种快速而肮脏的黑客方法:只需定期检查 name˜1.exe 是否在内存中。如果在:休斯顿,我们遇到问题了。
然后只需杀死 ˜9.exe、˜8.exe .... ˜1.exe 和 name.exe,无论它们是否存在。