Я не думаю, что процесс зомби - это большая головная боль. Процесс зомби не отнимает никаких ресурсов. Просто у него есть своя запись в таблице процессов.
Зомби-процесс не является сиротским процессом, у него есть родитель.
kill
, skill
pkill
не будет работать, так как процесс уже убит, просто его запись не была удалена.
Процесс зомби можно убить, отправив SIGCHLD
сигнал родителю. Я думаю, что сигнальное число SIGCHLD
является 17
или 18
Если это также не удастся, то вы можете захотеть убить самого родителя.
Из Википедии о сигнале SIGCHLD:
Когда дочерний процесс завершается до того, как родительский процесс вызвал wait, ядро сохраняет некоторую информацию об этом процессе, чтобы позволить его родительскому процессу вызвать wait позже. Поскольку дочерний процесс все еще потребляет системные ресурсы, но не выполняется, он известен как зомби-процесс.
ПРАВКА 1: Потребляемые системные ресурсы - это в основном запись таблицы процессов. Если кто-нибудь знает, потребляет ли он больше, чем это - память или цикл процессора, то, пожалуйста, добавьте объяснение. AFAIK, это практически не занимает каких-либо значительных системных ресурсов.
В 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, без которого ваша система не может работать