Есть ли какой-нибудь способ убить зомби-процесс без перезагрузки?

Я не думаю, что процесс зомби - это большая головная боль. Процесс зомби не отнимает никаких ресурсов. Просто у него есть своя запись в таблице процессов.

Зомби-процесс не является сиротским процессом, у него есть родитель.

kill, skill pkill не будет работать, так как процесс уже убит, просто его запись не была удалена.

Процесс зомби можно убить, отправив SIGCHLD сигнал родителю. Я думаю, что сигнальное число SIGCHLD является 17 или 18

Если это также не удастся, то вы можете захотеть убить самого родителя.

Из Википедии о сигнале SIGCHLD:

Когда дочерний процесс завершается до того, как родительский процесс вызвал wait, ядро сохраняет некоторую информацию об этом процессе, чтобы позволить его родительскому процессу вызвать wait позже. Поскольку дочерний процесс все еще потребляет системные ресурсы, но не выполняется, он известен как зомби-процесс.


ПРАВКА 1: Потребляемые системные ресурсы - это в основном запись таблицы процессов. Если кто-нибудь знает, потребляет ли он больше, чем это - память или цикл процессора, то, пожалуйста, добавьте объяснение. AFAIK, это практически не занимает каких-либо значительных системных ресурсов.


ПРАВКА 2: Цитата из Википедии

В Unix и Unix-подобных компьютерных операционных системах зомби-процесс или несуществующий процесс - это процесс, который завершил выполнение, но все еще имеет запись в таблице процессов. Эта запись по-прежнему необходима, чтобы позволить процессу, который запустил (теперь зомби) процесс, прочитать его статус завершения.

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


ПРАВКА 3

До настоящего времени я никогда не сталкивался с зомби-процессом, занимающим 100% процессора. Вижу это в первый раз.

Попробуйте сделать killall utorrent.exe

Я вижу, что есть два примера utorrent.exe и один из них - зомби. Вероятно, второй (ребенок). killall должен убить родителя, так как ребенок (зомби) не может быть убит.


ПРАВКА 4

Похоже, что killall не сработал, так как он подавал сигнал TERM вместо KILL.

Попробуйте killall --signal=KILL utorrent.exe

Если это не сработает, попробуйте выборочно завершить процесс.

Получите список utorrent.exe ПИД процесса

ps -e | grep -i utorrent

Вы должны получить два процесса, таких как

xxxx ?        aa:bb:cc utorrent.exe defunctyyyy ?        aa:bb:cc utorrent.exe

Итак, второй - это родитель.Убейте его, используя

убийство -9 гггг

ПРАВКА 5

Пожалуйста, попробуйте найти родительский идентификатор процесса с помощью этой команды bash

cat /proc/{defunctpid}/статус | grep -i ppid

в вашем случае это

cat /proc/7298/status | grep -i ppid

Если результат выглядит следующим образом

PPid: 1

Тогда, к сожалению, я думаю, что вам не повезло. Идентификатор процесса 1 принадлежит init, без которого ваша система не может работать