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.