Quando irá matar o PID?

3

Estou tentando kill 31216 31617 , mas depois de 10 vezes, esse processo ainda sobrevive.

Por quê?

Existe uma maneira de forçar a morte?

root     31216     1  0 10:49 ?        00:00:00 nginx: master process /root/nginx-1.0.2/objs/nginx -c /root/nginx-1.0.2/conf/nginx.conf
nobody   31217 31216  0 10:49 ?        00:00:00 [nginx] <defunct>
    
por locale 03.06.2011 / 06:01

3 respostas

3

Quando você está eliminando um processo com kill pid , está enviando um SIGTERM. Às vezes, um processo fica preso em um estado em que não escuta os sinais. Quando isso acontecer, tente kill -9 pid e isso provavelmente irá matá-lo para sempre.

Nesse caso, o processo defunto (31217) não poderá ser eliminado, mas o processo pai (31216) deverá morrer e levar seu processo filho com ele.

    
por 03.06.2011 / 06:05
3

Na página homem :

The command kill sends the specified signal to the specified process or process group. If no signal is specified, the TERM signal is sent. The TERM signal will kill processes which do not catch this signal. For other processes, it may be necessary to use the KILL (9) signal, since this signal cannot be caught.

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 process that started the (now zombie) process to read its exit status. The term zombie process derives from the common definition of zombie—an undead person. In the term's metaphor, the child process has "died" but has not yet been "reaped". Also, unlike normal processes, the kill command has no effect on a zombie process.

Fonte: wiki

EDITAR :

To remove zombies from a system, the SIGCHLD signal can be sent to the parent manually, using the kill command. If the parent process still refuses to reap the zombie, the next step would be to remove the parent process. When a process loses its parent, init becomes its new parent. Init periodically executes the wait system call to reap any zombies with init as parent.

Fonte: wiki

    
por 03.06.2011 / 06:04
2

Um processo atualmente em uma chamada de sistema ininterrupta (por exemplo, executando o código do kernel) não pode ser eliminado. Você pode usar strace ou uma ferramenta semelhante para descobrir onde ela está, de modo que você possa tentar separá-la.

    
por 03.06.2011 / 06:05

Tags