usando sudo criar outro processo

2

Eu escrevi um nome de script de shell testShell.Eu executo este shell usando o comando:

sudo sh testShell

Então eu uso    ps -ef|grep testShell|grep -v grep

para verificar os processos criados.Eu acho que o sistema criou dois processos para mim:

imcas@ubuntu:~$ ps -ef|grep testShell|grep -v grep
root      5687 32482  0 11:37 pts/1    00:00:00 sudo sh testShell
root      5688  5687 48 11:37 pts/1    00:00:08 sh testShell

Do ppid, eu sei que um é pai e o outro é filho.Agora eu quero matar o script de shell em execução.O que devo fazer Basta matar a criança ou devo matar o pai? Eu acho que se eu matar a criança usando  %código% , tanto a criança como o pai são mortos. Mas se eu matar o pai usando %código% , apenas o pai é morto. Alguém poderia me dizer o motivo?

    
por wuchang 12.12.2014 / 04:24

2 respostas

3

No Linux, uma vez que um processo pai é eliminado, seu processo filho torna-se órfão. Mas, em seguida, o processo " init " de "caloroso" adota esse processo órfão que permite que ele continue.

Para matar os processos pai e seus filhos, você pode usar:

pkill -TERM -P <parent's PID>

(Nota: processo órfão é diferente do processo zumbi, mas isso é para outra pergunta :-)

    
por 12.12.2014 / 05:01
3

O pai ( sudo ) é notificado de que o processo filho foi encerrado. Como o único propósito do pai era executar este processo filho, ele termina. Outros processos não terminariam apenas porque você mata um processo filho.

Por outro lado, a criança não se importa com o que o processo pai faz. O pai pode até terminar imediatamente após o processo filho ter sido criado. sudo aguarda a saída do filho porque sudo precisa do código de saída do filho para seu próprio código de saída.

    
por 12.12.2014 / 04:42