Как убить задачу, которой «не хватает экземпляра»?

19

Сначала Spotify убил себя, но «что-то из этого» продолжало оставаться, что можно было обнаружить как задачу с PID 8664, и, судя по тому, что время от времени менялось использование ОЗУ, он «что-то делал».

Прежде всего, этот процесс не позволил мне слушать музыку, потому что Spotify отказался перезапускаться из-за зависания этого экземпляра.

Поэтому я попытался избавиться от этого процесса. Но ни менеджер задач, ни команда taskkill (как, конечно, Admin) не преуспели в этом.

Taskkill, по крайней мере, дал мне «причину», которую я здесь переведу.

>taskkill /pid 8664 /f
>taskkill /im spotify.exe /f

оба дали:

ERROR: The process "spotify.exe" with PID 8664 could not be terminated.
Reason: There is currently no instance executed by this task.

Я хотел бы знать, что это означает, и есть ли другой вариант, как прекратить такой процесс.

(Windows 7 Pro 64 бит)

Раффаэль
источник
Это означает, что Spotify либо не запущен, либо у вас неверный идентификатор процесса. Невозможно «спрятать» процесс в Windows. Как вы определили идентификатор процесса, о котором идет речь, был подключен к Spotify.
Ramhound
не было ничего «спрятанного» и PID был верным
Рафаэль
1
@Ramhound, о "Невозможно" скрыть "процесс в Windows". Это представляется возможным, если мы посмотрим на этот вопрос , например , security.stackexchange.com/questions/84385/... или этот вопрос security.stackexchange.com/questions/24848/...
user100487
@ user100487 - Вы абсолютно ничего не можете сделать с процессом, чтобы скрыть его, что, по моим сведениям, привело бы к тому, что я его не нашел. Каждый метод, описанный в этих связанных ответах, имеет обходной путь, в некоторых случаях у меня могут возникнуть проблемы, но я гарантирую, что смогу найти решение. Если я могу это сделать, то каждый может это сделать. Пожалуйста, избегайте пинговать меня по таким старым вопросам, это раздражает, так как ваш комментарий не конструктивен по прошествии всего этого времени ».
Ramhound
1
да, конечно, "любой процесс может быть найден". Однако они могут быть скрыты от просмотра, если вы используете только инструменты, упомянутые в OP (Windows Task Manager или Task Kill). Это все.
user100487

Ответы:

12

Процесс почти наверняка уже мертв, то есть он больше не выполняет какой-либо код. Однако бухгалтерия об этом не исчезнет, ​​пока не будут закрыты все дескрипторы к нему и каждый из его потоков. У вас может быть другая программа, держащая такой дескриптор в открытом состоянии (вероятнее всего, антивирусные программы), или она могла перед своей смертью сделать запрос на драйвер режима ядра, который теперь завис (у меня когда-то был привод CD, который вызывал это много). Дальнейшее чтение: «Почему некоторые процессы остаются в диспетчере задач после их уничтожения?» и "Почему все эти процессы затягиваются до смерти и что их поддерживает?"

Spotify отказывается запускаться снова, потому что видит свою копию, которая уже запущена, но, очевидно, просто ищет другой вызываемый процесс spotify. (По словам Рэймонда Чена, приложение для одного экземпляра - это собственный отказ в обслуживании.) Самый простой способ исправить это - перезагрузить компьютер, поскольку это уничтожит все дескрипторы и бухгалтерию.

Но если вы действительно чувствуете, что Fixing It Yourself TM , скачайте Process Explorer , фантастически полезную бесплатную утилиту от Sysinternals. (У меня нет принадлежности.) Запустите его, установка не требуется, и примите лицензионное соглашение. В разделе «Файл» выберите « Показать детали для всех процессов» ; это приводит к тому, что Process Explorer перезапускается от имени администратора. Затем в разделе «Найти» выберите « Найти дескриптор» или «DLL» . Введите название процесса зомби (ну, труп) и нажмите Поиск.

в поисках ручек

Столбцы Process и PID сообщают, какому процессу принадлежит дескриптор. Столбец Тип указывает, что это за вещь; нас интересуют те, которые имеют тип Process или Thread . Столбец Имя сообщает вам, что дескриптор для. (Многие процессы имеют собственные дескрипторы; они исчезнут, если приложение-владелец завершит работу без проблем в режиме ядра.)

Опасность : закрытие дескриптора, в котором действительно нуждается приложение, является отличным способом его сбоя. Если возможно, выйдите из приложения, которому принадлежит дескриптор. Но если ты не можешь, или тебе просто хочется бить молотком ...

Нажмите на запись в этом окне поиска, чтобы открыть панель маркеров. Щелкните правой кнопкой мыши вновь выделенную запись на этой панели и выберите « Закрыть дескриптор», чтобы убрать ее из существования.

Как только все ручки будут закрыты, процесс исчезнет.

Бен Н
источник
Я не мог заставить это работать ProcessExplorer зависает очень легко, и у меня не было никакого процесса, у которого была бы ручка, которую я мог закрыть
Мэтью Лок
2
Я закрыл все обработанные для всех потоков, но проблема осталась.
Томаш Зато - Восстановить Монику