Liste todos os processos que posso matar, para que eu possa matá-los
772
Preciso descobrir todos os processos que posso matar como meu usuário (sem privilégios), para poder eliminá-los. como faço isso? Eu só quero matar tudo que eu puder.
A chamada de sistema kill() aceita o PID -1para especificar "todos os processos possíveis".
Se pid for igual a -1, então sig é enviado para todos os processos para os quais o processo de chamada tem permissão para enviar sinais, exceto para o processo 1 ( init ), mas veja abaixo.
[...]
POSIX.1 requer que kill(-1, sig ) envie sig para todos os processos para os quais o processo de chamada pode enviar sinais, exceto possivelmente para alguns processos de sistema definidos pela implementação.
Na linha de comando, use kill -TERM -1. (O nome do sinal deve ser explicitamente especificado, caso contrário, o "-1" será mal interpretado como especificando SIGHUP em vez de especificar o ID do processo).
Para enumerar todos os processos que podem ser eliminados:
Descubra o método específico do sistema operacional para enumerar todos os processos existentes. Não há API C padrão POSIX para fazer isso.
Para cada ID de processo, envie o sinal 0(sinal fictício usado apenas para verificações de permissão). Se você obtiver zero, poderá encerrar esse processo; se você obtiver -EPERM, você não é.
Observe que fazer isso para matar posteriormente todos esses processos é uma perda de tempo, porque você pode simplesmente enviar o sinal real assim que souber o PID. (Sem mencionar que depende de recursos não-POSIX para enumeração de processos.)
A chamada de sistema kill() aceita o PID
-1
para especificar "todos os processos possíveis".Na linha de comando, use
kill -TERM -1
. (O nome do sinal deve ser explicitamente especificado, caso contrário, o "-1" será mal interpretado como especificando SIGHUP em vez de especificar o ID do processo).Para enumerar todos os processos que podem ser eliminados:
0
(sinal fictício usado apenas para verificações de permissão). Se você obtiver zero, poderá encerrar esse processo; se você obtiver -EPERM, você não é.Observe que fazer isso para matar posteriormente todos esses processos é uma perda de tempo, porque você pode simplesmente enviar o sinal real assim que souber o PID. (Sem mencionar que depende de recursos não-POSIX para enumeração de processos.)