Что такое процесс и почему его не убивают?
Браузер Chrome не реагировал, и я попытался убить его, но вместо исчезновения процесс справа и не убили
Что такое за процесс и почему его не убить?
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 ) делает это позже. Зомби Процесс это просто:
Процесс, который завершился и который удален, когда его состояние завершения было сообщено другому процессу, который ожидает завершения этого процесса.
Источник
Defunct process
A «defunct» process (sometimes referred to as «zombie») is a process that is actually finished which depends on a parent process which for some reason (=error) has not accepted the knowledge that it is finished and should be terminated.
How to get rid of them [ edit ]
Defunct processes will sometimes show up in the process list (top and ps -aux). Many people, including myself, find these annoying. Additionally, the reason for processes to be listed as defunct is that something has gone wrong with the parent process.
The solution is to find out what parent process the defunct processes belong to and stop it (or restart it).
The long story [ edit ]
Unix manages an explicit parent-child relationships between processes (Windows does not do this).
When a child process dies, the parent process recieves a notification. It is then the duty of the parent process to explicitly take notice of the childs demise by using the wait() system call.
The return value of the wait() is the process ID of the child, which gives the parent exact control about which of its children are still alive. Upon returning, wait() will have set the integer pointed to by its argument to the exit status of the child. A shell programm like «bash» could then decide how to process following commands and set the special $? variable accordingly.
As long as the parent hasn’t called wait(), the system needs to keep the dead child in the global process list, because that’s the only place where the process ID is stored. The purpose of the «zombies» is really just for the system to remember the process ID, so that it can inform the parent process about it on request.
If the parent «forgets» to collect on its children, then the zombie will stay undead forever.
Well, almost forever. If the parent itself dies, then «init» (the system process with the ID 0) will take over fostership over its children and catch up on the neglected parental duties. This is why you need to identify the parent process and stop or restart it in order to get rid of defunct processes. If the zombie process has id nnnnn, you can do ps -ef | grep nnnnn and find the id of the parent process, which you can then kill if no longer needed. Then the defunct process will be removed from the list.
Источник
Что такое процесс и почему его не убивают?
Браузер 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 вызывает проблему, и мы будем запускать его несколько раз, чтобы убить несколько, если это необходимо.
развивая ответ Паддингтона ..
Из вашего вывода мы видим несуществующий , что означает, что этот дочерний процесс либо выполнил свою задачу, либо был поврежден или уничтожен. Его родительский процесс все еще выполняется и не заметил своего мертвого потомка.
kill -9 PID не будет работать (уже мертв).
Чтобы определить родителя этого дочернего процесса, выполните следующую команду:
ps -ef | grep defunct
Посмотрите, кто является родителем: ps ax | grep 27872
Если вы хотите, вы можете убить родителя, и несуществующий исчезнет. kill -9 27872
см. ответ Дж.Ф. Себастьяна для более технических рассуждений.
Источник
How To Kill Defunct Or Zombie Process?
A «defunct» processes is also known as a «zombie» processes. A Zombie process is referred as dead process which is receding on your system though it’s completed executing. In one shot we can say it’s a dead processes which is still in RAM. This process will be in your process table and consuming your memory. Having more defunct process will consume your memory which intern slows your system. We have to kill the defunct process in order to free RAM and make system stable.
Why defunct process are created?
Ans : When ever a process ends all the memory used by that process are cleared and assigned to new process but due to programming errors/bugs some processes are still left in process table. These are created when there is no proper communication between parent process and child process.
Some FAQ?
1. How to find a defunct process?
And : Grep defunct value in ps -ef output
#ps -ef | grep defunct
2. How can I kill a defunct process?
And : Just use kill command
#kill defunct-pid
3. Still not able to kill?
Ans : Then use kill -9 to force kill that process
#kill -9 defunct-pid
4. Still have an issue in killing it?
Ans : Then try to kill it’s parent id and then defunct.
#kill parent-id-of-defunct-pid
Then
#kill -9 parent-id-of-defunct-pid
5. Still having defunct?
Ans : If you still find defunct process eating up RAM then last and final solution is to reboot your machine(This is not preferred on production boxes).
6.What is orphan process?
Ans : An orphan process is said to be a process which runs though parent process is terminated, these process do not know what to do and when to terminate.
7. What is difference between orphan and defunct processes?
Ans : A defunct process is a dead process where there is no execution happening where as orphan process is a live process which is still in execution state but don’t have parent process
I am having a system which daily creates defunct process, I cannot sit and kill these process on daily basis.
How to get rid of this problem?
Ans : Just write a shell script to grep defunct process and kill them by putting this script in corntab.
Источник
Зомби процессы Linux
Каждая программа, которая выполняется в Linux, — это системный процесс, у которого есть свой идентификатор. Каждый процесс может запускать дочерние процессы с помощью функции fork. Такие процессы остаются под контролем родительского процесса и не могут быть завершены без его ведома. Если один из дочерних процессов всё же завершился, а его родительский процесс не смог получить об этом информацию, то такой дочерний процесс становится зомби.
Зомби процессы Linux не выполняются и убить их нельзя, даже с помощью sigkill, они продолжают висеть в памяти, пока не будет завершён их родительский процесс.
Посмотреть такие процессы можно с помощью утилиты ps, здесь они отмечаются как defunct:
ps aux | grep defunct
Если вы попытаетесь убить такой процесс с помощью сигнала KILL, то ничего не выйдет:
Чтобы его завершить, нужно найти «родителя» этого процесса. Для этого используйте команду:
ps -xal | grep defunct
Здесь идентификатор родительского процесса находится в четвёртой колонке (PPID). Теперь мы можем послать ему сигнал завершения, и такого процесса в системе больше не будет:
Для большего удобства вы можете использовать утилиты top или htop, но принцип их действия будет аналогичным, поэтому я не буду здесь его рассматривать. Теперь вы знаете, что делать, если в вашей системе появились зомби процессы Linux.
Источник