Есть 5 процессов, которые не могут быть прерваны, kill -9 $PID
и выполнение cat /proc/$PID/cmdline
будет зависать от текущего сеанса. Может быть, это процессы зомби.
Выполнение ps -ef or htop
также приведет к зависанию текущего сеанса. Но top
и ps -e
работают нормально.
Таким образом, кажется, что есть две проблемы, файловая система не отвечает.
Это рабочая машина с виртуальными машинами, поэтому перезагрузка не возможна.
Следующие идентификаторы процессов не работают: 16181 16765 5985 7427 7547
Родителем этих процессов является init
├─collectd(16765)─┬─{collectd}(16776)
│ ├─{collectd}(16777)
│ ├─{collectd}(16778)
│ ├─{collectd}(16779)
│ ├─{collectd}(16780)
│ └─{collectd}(16781)
├─collectd(28642)───{collectd}(28650)
├─collectd(29868)─┬─{collectd}(29873)
│ ├─{collectd}(29874)
│ ├─{collectd}(29875)
│ └─{collectd}(29876)
И один из процессов QEMU не работает
|-qemu-system-x86(16181)-+-{qemu-system-x86}(16232)
| |-{qemu-system-x86}(16238)
| |-{qemu-system-x86}(16803)
| |-{qemu-system-x86}(17990)
| |-{qemu-system-x86}(17991)
| |-{qemu-system-x86}(17992)
| |-{qemu-system-x86}(18062)
| |-{qemu-system-x86}(18066)
| |-{qemu-system-x86}(18072)
| |-{qemu-system-x86}(18073)
| |-{qemu-system-x86}(18074)
| |-{qemu-system-x86}(18078)
| |-{qemu-system-x86}(18079)
| |-{qemu-system-x86}(18086)
| |-{qemu-system-x86}(18088)
| |-{qemu-system-x86}(18092)
| |-{qemu-system-x86}(18107)
| |-{qemu-system-x86}(18108)
| |-{qemu-system-x86}(18111)
| |-{qemu-system-x86}(18113)
| |-{qemu-system-x86}(18114)
| |-{qemu-system-x86}(18119)
| |-{qemu-system-x86}(23147)
| `-{qemu-system-x86}(27051)
linux
process
kill
zombie-process
Сэм Стоилинга
источник
источник
/usr/bin/strace ps -ef
чтобы увидеть, где именно вашps -ef
висит.ps -el
и в каком состоянии эти процессы?Ответы:
У тебя нет зомби.
cat /proc/$PID/cmdline
не будет никаких проблем с зомби. Если программаkill -9
не убивает , это означает, что она выполняет непрерывную операцию ввода-вывода. Это обычно указывает на одну из трех вещей:Утилиты, такие как
ps
может зависнуть, если они пытаются прочитать некоторую информацию, такую как путь к исполняемому файлу процесса, который ядро не предоставляет по одной из вышеуказанных причин.Попробуйте
cat /proc/16181/syscall
посмотреть, что делает процесс 16181. Это может или не может работать в зависимости от того, как далеко зашла ваша система.Если проблема связана с сетевой файловой системой, вы можете ее принудительно размонтировать или подключить к сети. Если проблема заключается в ошибке ядра или оборудования, то, что вы можете сделать, будет зависеть от характера ошибки. Настоятельно рекомендуется перезагрузка (и обновление до фиксированного ядра или замена сломанного оборудования).
источник
Другие ответы предполагают, что это процессы зомби. Процесс зомби - это процесс, который завершился, но все еще находится в таблице процессов на тот случай, если родитель хочет узнать статус выхода. Это нормально и
init
автоматически очищает процессы зомби, которые ему назначены.Процессы зомби никогда не должны приводить к зависанию чего-либо, поэтому, похоже, это не ваша проблема. Если это системный вызов или зависание драйвера, то процесс может находиться в непрерывном состоянии. Там хорошее объяснение здесь .
источник
fork
успешному выполнению (приnrpoc
достижении сложного уровня), поскольку они все еще занимают место в таблице процессов.Чтобы найти процессы зомби в Linux:
Сначала вы можете попробовать отправить сигнал SIGCHLD родительскому процессу зомби с помощью команды kill. Обратите внимание, что приведенная выше команда дает вам PPID (PID родительского процесса) каждого зомби. В нашем примере PPID зомби есть
555
.Если процесс зомби все еще не исчезает, вы можете убить родительский процесс (например, 555) зомби.
Как только его родительский процесс будет уничтожен, зомби будет принят процессом init, который является родителем всех процессов в Linux. Процесс init периодически вызывает
wait()
любой процесс зомби.источник
Вы можете убить только зомби, убив его родителей. Зомби-процесс освободил все свои ресурсы и ожидает, когда его родительский объект получит статус выхода. Это становится зомби, когда родитель не выполняет,
wait
чтобы получить статус выхода от своего ребенка. Когда вы убиваете родителя зомби, онinit
получает статус выхода и зомби наконец умирает.источник
init
. Если зомби перерабатываются подinit
, вы не можете убить его.