
У меня есть пара серверов с процессом, который регулярно зависает. Мы убиваем этот процесс с помощью скрипта vbs, который запускает команду taskkill (помимо нескольких других вещей). Проблема в том, что имя процесса постоянно меняется. В какой-то момент оно отображалось как "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, есть они там или нет.