Elimine processos recursivamente por seus IDs de processo dados em um arquivo

0

Eu quero poder matar alguns processos. Eu sei o id do processo (que é dado no arquivo) e eu não quero fazer isso um por um. Existe alguma maneira de fazer algo como chamar o comando kill de forma recursiva e dar a ele entrada por meio de entrada de arquivo ou padrão, como fazemos com rm command ...

    
por Ashu 31.03.2018 / 14:05

1 resposta

1

Dado um arquivo, pids.txt , com um ID de processo por linha, você pode fazer

xargs kill <pids.txt

Isso invocará o utilitário kill com os IDs do processo do arquivo.

Outras soluções incluem

kill $(cat pids.txt)

qual IMHO não é tão elegante, e

while read pid; do
    kill "$pid"
done <pids.txt

que é muito para escrever para fazer uma coisa simples.

Observe que nenhuma das variações acima é capaz de verificar se os IDs do processo no arquivo de texto correspondem aos mesmos processos aos quais os IDs do processo estavam anexados no momento da criação do arquivo.

Nos sistemas Linux, os IDs de processo geralmente são incrementados em um para cada novo processo e, quando o ID de processo máximo permitido é usado, os IDs adicionais são alocados a partir de um número baixo. Isso significa que os IDs do processo, ao longo do tempo, são reutilizados.

Em alguns sistemas, como o OpenBSD, os IDs de processo são alocados aleatoriamente. Aqui também haverá reutilização de IDs de processo antigas após algum tempo.

    
por 31.03.2018 / 14:24

Tags