Linux defunct что это

Что такое процесс и почему его не убивают?

Браузер Chrome не реагировал, и я попытался убить его, но вместо того, чтобы исчезнуть, процесс имел право и не был убит:

Что за процесс и почему его не убить?

Из вашего вывода мы видим «несуществующий», что означает, что процесс либо завершил свою задачу, либо был поврежден или уничтожен, но его дочерние процессы все еще работают или эти родительские процессы отслеживают свой дочерний процесс. Чтобы убить такой процесс, kill -9 PID не работает. Вы можете попытаться убить их с помощью этой команды, но она будет показывать это снова и снова.

Определите, кто является родительским процессом этого несуществующего процесса, и уничтожьте его. Чтобы узнать это, запустите команду:

ps -ef | grep defunct

Затем kill -9 637 27872 , затем убедитесь, что несуществующий процесс прошел ps -ef | grep defunct .

Отмеченные процессы — это мертвые процессы (так называемые «зомби» ), которые остаются, потому что их родитель не уничтожил их должным образом. Эти процессы будут уничтожены, init(8) если родительский процесс завершится.

Вы не можете убить его, потому что он уже мертв. Остается только запись в таблице процессов :

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

Нет ничего плохого в том, чтобы позволить таким процессам быть, если их не много. Зомби в конце концов пожинает его родитель (по вызову wait(2) ). Если исходный родитель не получил его до своего выхода, init process ( pid == 1 ) сделает это позже. Зомби Процесс это просто:

Процесс, который завершился и который удален, когда его состояние завершения было сообщено другому процессу, который ожидает завершения этого процесса.

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

развивая ответ Паддингтона ..

Читайте также:  Как установить tkinter python windows

Из вашего вывода мы видим несуществующий , что означает, что этот дочерний процесс либо выполнил свою задачу, либо был поврежден или уничтожен. Его родительский процесс все еще выполняется и не заметил своего мертвого потомка.

kill -9 PID не будет работать (уже мертв).

Чтобы определить родителя этого дочернего процесса, выполните следующую команду:

ps -ef | grep defunct

Посмотрите, кто является родителем: ps ax | grep 27872

Если вы хотите, вы можете убить родителя, и несуществующий исчезнет. kill -9 27872

см. ответ Дж.Ф. Себастьяна для более технических рассуждений.

Источник

Выполняю установку, настройку, сопровождение серверов. Для уточнения деталей используйте форму обратной связи

Что же это такое?
Это дочерний процесс в Unix-системе, завершивший своё выполнение, но ещё присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу считать код завершения. Процесс при завершении освобождает все свои ресурсы (за исключением PID — идентификатора процесса) и становится «зомби» — пустой записью в таблице процессов, хранящей код завершения для родительского процесса.
Система уведомляет родительский процесс о завершении дочернего с помощью сигнала SIGCHLD. Предполагается, что после получения SIGCHLD он считает код возврата с помощью системного вызова wait(), после чего запись зомби будет удалена из списка процессов. Если родительский процесс игнорирует SIGCHLD (а он игнорируется по умолчанию), то зомби остаются до его завершения.

А теперь возникают вопросы: как же всё-таки их найти и убить? Найти их очень просто. Вот несколько вариантов:

1)
top | grep zombie
225 processes: 1 running, 222 sleeping, 2 zombie

2)
ps aux | grep -w Z
root 3994 0,0 0,0 0 0 ?? Z 13июн11 16:23,02
root 3995 0,0 0,0 0 0 ?? Z 13июн11 13:43,28

3)
ps -alx | awk ‘$10

Что касается «убийства», то их нельзя просто так убить. Самый правильный вариант — найти родительский процесс и перезапустить его. Некоторые могут посоветовать и перегрузиться, но это не выход.

Находим родительский процесс:

ps ajx | grep -w Z
root 3994 3992 3992 3992 0 Z ?? 16:23,02
root 3995 3992 3992 3992 0 Z ?? 13:43,28

3-я колонка как раз и показывает pid родительского процесса. Смотрим, что это за процесс:

ps auxww | grep 3992
root 3992 0,0 0,2 30664 9872 ?? Ss 13июн11 0:08,21 [exilog_agent] (perl5.12.3)

Собственно мы нашли виновника. Это exilog_agent. А дальше — либо просто прибиваем родительский процесс либо перезапускаем его:

#kill -9 3992
#top | grep zombie
#

Источник

Что такое процесс и почему его не убивают?

Браузер Chrome не реагировал, и я попытался убить его, но вместо исчезновения процесс справа и не убили

Что такое за процесс и почему его не убить?

Читайте также:  Windows build 7601 this copy

5 ответов

Из вашего вывода мы видим «несуществующий», что означает, что процесс либо завершил свою задачу, либо был поврежден или уничтожен, но его дочерние процессы все еще работают или эти родительские процессы отслеживают свой дочерний процесс. Чтобы убить такой процесс, kill -9 PID не работает. Вы можете попытаться убить их с помощью этой команды, но она будет показывать это снова и снова.

Определите, кто является родительским процессом этого несуществующего процесса, и уничтожьте его. Чтобы узнать это, запустите команду:

ps -ef | grep defunct

затем kill -9 637 27872 , затем убедитесь, что несуществующий процесс прошел ps -ef | grep defunct ,

Процессы отмечены мертвые процессы (так называемые «зомби»), которые остаются, потому что их родитель не уничтожил их должным образом. Эти процессы будут уничтожены init(8) если родительский процесс завершается.

Вы не можете убить его, потому что он уже мертв. Остается только запись в таблице процессов:

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

Нет ничего плохого в том, чтобы позволить таким процессам быть, если их не много. Зомби в конце концов пожинает его родитель ( wait(2) ). Если исходный родитель не получил его до своего выхода, init процесс ( pid == 1 ) делает это позже. Зомби Процесс это просто:

Процесс, который завершился и который удален, когда его состояние завершения было сообщено другому процессу, который ожидает завершения этого процесса.

Источник

Зомби процессы Linux

Каждая программа, которая выполняется в Linux, — это системный процесс, у которого есть свой идентификатор. Каждый процесс может запускать дочерние процессы с помощью функции fork. Такие процессы остаются под контролем родительского процесса и не могут быть завершены без его ведома. Если один из дочерних процессов всё же завершился, а его родительский процесс не смог получить об этом информацию, то такой дочерний процесс становится зомби.

Зомби процессы Linux не выполняются и убить их нельзя, даже с помощью sigkill, они продолжают висеть в памяти, пока не будет завершён их родительский процесс.

Посмотреть такие процессы можно с помощью утилиты ps, здесь они отмечаются как defunct:

ps aux | grep defunct

Если вы попытаетесь убить такой процесс с помощью сигнала KILL, то ничего не выйдет:

Чтобы его завершить, нужно найти «родителя» этого процесса. Для этого используйте команду:

Читайте также:  Brasero linux что это

ps -xal | grep defunct

Здесь идентификатор родительского процесса находится в четвёртой колонке (PPID). Теперь мы можем послать ему сигнал завершения, и такого процесса в системе больше не будет:

Для большего удобства вы можете использовать утилиты top или htop, но принцип их действия будет аналогичным, поэтому я не буду здесь его рассматривать. Теперь вы знаете, что делать, если в вашей системе появились зомби процессы Linux.

Источник

What is a process, and why doesn’t it get killed?

The chrome browser was not responsive and I tried to kill it, but instead of disappearing the process had at its right, and didn’t get killed:

What is for a process and why it doesn’t it get killed?

6 Answers 6

From your output we see a «defunct», which means the process has either completed its task or has been corrupted or killed, but its child processes are still running or these parent process is monitoring its child process. To kill this kind of process, kill -9 PID doesn’t work. You can try to kill them with this command but it will show this again and again.

Determine which is the parent process of this defunct process and kill it. To know this run the command:

Then kill -9 637 27872 , then verify the defunct process is gone by ps -ef | grep defunct .

Processes marked are dead processes (so-called «zombies») that remain because their parent has not destroyed them properly. These processes will be destroyed by init(8) if the parent process exits.

You can’t kill it because it is already dead. The only thing left is an entry in the process table:

On Unix and Unix-like computer operating systems, a zombie process or defunct process is a process that has completed execution but still has an entry in the process table. This entry is still needed to allow the parent process to read its child’s exit status.

There is no harm in letting such processes be unless there are many of them. Zombie is eventually reaped by its parent (by calling wait(2) ). If original parent hasn’t reaped it before its own exit then init process ( pid == 1 ) does it at some later time. Zombie Process is just:

A process that has terminated and that is deleted when its exit status has been reported to another process which is waiting for that process to terminate.

Источник

Оцените статью