Comando killall: encerrar processos pelo nome, o sinal -9 e instalar o psmisc

Ambiente de testeFamília RHELAlmaLinux 9.8psmisc 23.4conta rootDebian 12 · psmisc 23.6 Conta comum (executa o killall)
Comandos de processos · agendamentokillallLocalização/usr/bin/killallVerificado em 2026-11-03

O comando killall é um comando do Linux que escolhe os processos em execução pelo nome do programa em vez do número do processo (PID) e envia um sinal a eles; se você não indicar um sinal, ele envia SIGTERM (segundo o manual oficial). Como ele encerra de uma vez todos os processos com o mesmo nome, primeiro verificamos com pgrep e ps quatro processos iniciados em um servidor AlmaLinux 9 a partir de cópias do sleep com outros nomes; em um executável com nome de mais de 15 caracteres, só os 15 primeiros caracteres ficaram no nome do processo.

Executamos o killall apenas em processos xxsleep iniciados para teste com uma conta comum em um servidor Debian 12. As caixas de resultado mostram a saída de rpm, pgrep, ps, pidof, cat e kill executados com a conta root em um servidor AlmaLinux 9.8, e a saída do killall executado no servidor Debian 12. Os números de processo (PID), os nomes de processo, os caminhos dos executáveis e os nomes de conta foram trocados por valores de exemplo.

1️⃣ Instalar o comando killall

  • ↪️ O pacote psmisc e a verificação da versão

O killall faz parte do pacote psmisc. Em um servidor AlmaLinux 9.8, ao verificar com rpm a qual pacote /usr/bin/killall pertence, apareceu a versão psmisc 23.4.

rpm -qf --qf '%{NAME} %{VERSION}\n' /usr/bin/killall
psmisc 23.4

A lista de arquivos do mesmo pacote, vista com rpm -ql, também incluía pstree e fuser.

Se aparecer [command not found], ou seja, que o comando não foi encontrado, instale o pacote psmisc. Na família RHEL é [dnf install psmisc], e na família Debian, [apt install psmisc]. O servidor Debian 12 já tinha o psmisc 23.6 instalado, e o killall estava em /usr/bin/killall.

Ao verificar no servidor AlmaLinux 9.8, o pkill, de nome parecido, estava no pacote procps-ng, e o kill era um comando embutido do shell.

2️⃣ Como usar o comando killall

  • ↪️ Verificar os alvos pelo nome do processo

A forma básica é [killall nome do processo]. Ele encontra todos os processos em execução com o nome indicado e envia um sinal a eles; se você escrever vários nomes, ele faz o mesmo para cada nome (segundo o manual oficial).

Como os processos com o mesmo nome terminam todos de uma vez, verifique primeiro com pgrep o que está rodando com esse nome. Copiamos o sleep para uma pasta de trabalho com os nomes xxsleep-a1, xxsleep-a2 e xxsleep-longname-x1, iniciamos o xxsleep-a1 duas vezes, para um total de quatro processos, e mostramos números e nomes com -l.

pgrep -l xxsleep
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2
2155 xxsleep-longnam

Na quarta linha, o executável se chama xxsleep-longname-x1, mas o nome do processo estava cortado em xxsleep-longnam.

Com -a, aparece a linha de comando completa que foi executada. Os dois xxsleep-a1 com o mesmo nome foram diferenciados pelo argumento final em segundos, 300 e 310.

pgrep -a xxsleep
2141 /root/work/xxsleep-a1 300
2142 /root/work/xxsleep-a1 310
2150 /root/work/xxsleep-a2 320
2155 /root/work/xxsleep-longname-x1 330

Para encontrar só os processos cujo nome corresponde exatamente, adicione -x. O resultado com xxsleep-a1 foram dois números.

pgrep -x xxsleep-a1
2141
2142

Para verificar só os números digitando um nome do jeito que é, use o pidof. Ao procurar xxsleep-a1, os dois números apareceram em uma linha.

pidof xxsleep-a1
2142 2141

O ps mostra só os processos cujo nome corresponde exatamente quando você escreve vários nomes separados por vírgulas depois de -C.

ps -o pid,comm -C xxsleep-a1,xxsleep-a2
    PID COMMAND
   2141 xxsleep-a1
   2142 xxsleep-a1
   2150 xxsleep-a2

No servidor Debian 12, iniciamos quatro processos com os mesmos nomes e executamos [killall xxsleep-a1]: ele não mostrou nada e terminou com o código de saída 0. Ao procurar de novo com pgrep, os dois xxsleep-a1 tinham sumido e restavam só xxsleep-a2 e xxsleep-longname-x1. Se você escrever um caminho com barra (/) em vez de um nome, ele escolhe os processos que executam esse arquivo, seja qual for o nome (segundo o manual oficial).

Com o nome inexistente xxsleep-zz, apareceu uma linha com [no process found] depois do nome, e terminou com o código de saída 1. O código de saída só é 0 quando pelo menos um processo foi encerrado para cada nome indicado (segundo o manual oficial).

killall xxsleep-zz
xxsleep-zz: no process found

Para encerrar só um processo cujo número você conhece, envie um sinal só a esse número com kill: Comando kill do Linux.

3️⃣ Opções do comando killall

  • ↪️ -e e nomes de 15 caracteres, -i, -v, -u, -r

Ao ler em /proc/PID/comm o nome do processo iniciado como xxsleep-longname-x1, só restavam os 15 primeiros caracteres: xxsleep-longnam.

cat /proc/2155/comm
xxsleep-longnam

Executamos o pgrep com xxsleep-longname, de 16 caracteres.

pgrep -a xxsleep-longname

Terminou sem saída e com o código de saída 1, e ao procurar de novo com xxsleep-longnam, de 15 caracteres, esse processo apareceu.

pgrep -l xxsleep-longnam
2155 xxsleep-longnam

Quando o killall recebe um nome com mais de 15 caracteres e há processos cujo nome completo ele não consegue ler, ele mira todos os que têm os 15 primeiros caracteres iguais; com -e, ele pula essas entradas (segundo o manual oficial). No servidor Debian 12, ao escrever xxsleep-longnam, os 15 primeiros caracteres, com -e e -v, apareceram linhas dizendo que três outros processos com o nome cortado em 15 caracteres foram pulados, e terminou com [no process found].

killall -e -v xxsleep-longnam
killall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
xxsleep-longnam: no process found

Com o nome completo xxsleep-longname-x1, depois das mesmas linhas de pulo apareceu uma linha mostrando o sinal enviado a esse processo.

killall -e -v xxsleep-longname-x1
killall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
Killed xxsleep-longname-x1(2155) with signal 15

Com -v, apareceu para cada processo que recebeu um sinal uma linha com o nome, o número e o número do sinal.

killall -v xxsleep-a2
Killed xxsleep-a2(2150) with signal 15

O -i pergunta, para cada processo, se deve encerrá-lo. Iniciamos de novo dois xxsleep-a1 e passamos y e n pela entrada padrão, nessa ordem: as duas perguntas apareceram seguidas em uma linha, e só o primeiro xxsleep-a1 terminou; o segundo continuou.

printf 'y\nn\n' | killall -i xxsleep-a1
Kill xxsleep-a1(2171) ? (y/N) Kill xxsleep-a1(2172) ? (y/N)

O -u escolhe só os processos que pertencem a essa conta, e se você omitir o nome, o alvo são todos os processos dessa conta. Ao escrever também xxsleep-a1 depois do nome da conta, o sinal foi enviado só ao xxsleep-a1 que restava.

killall -v -u user xxsleep-a1
Killed xxsleep-a1(2172) with signal 15

O -o e o -y escolhem pela hora de início, e o tempo é escrito com um número seguido de uma unidade s, m, h, d, w, M ou y, como em [-o 30m].

O -r lê os nomes como expressões regulares estendidas. Ao passar o padrão ^xxsleep-a ao pgrep, apareceram três processos que começam com xxsleep-a.

pgrep -l '^xxsleep-a'
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2

O -w espera, verificando a cada segundo, até que todos os processos que receberam o sinal sumam. Se um processo ignorar o sinal ou ficar como zumbi, a espera pode não ter fim.

A primeira tabela abaixo reúne os comandos de verificação e as opções do killall realmente executados neste artigo; as opções do killall não executadas estão na segunda tabela, segundo o manual oficial.

📌 Verificar processos e killall: resultados deste artigo

ComandoTarefaResultado neste artigo
pgrep -l nomeNúmero e nome dos processos cujo nome o contémQuatro linhas com xxsleep; o nome longo aparece só até os 15 primeiros caracteres, xxsleep-longnam
pgrep -a nomeNúmero e linha de comando completaOs dois xxsleep-a1 com o mesmo nome diferenciados pelos argumentos finais 300 e 310
pgrep -x nomeSó os números dos processos cujo nome corresponde exatamenteCom xxsleep-a1, duas linhas: 2141 e 2142
pidof nomeOs números em execução com esse nome, em uma linhaCom xxsleep-a1, 2142 2141
ps -o pid,comm -C nomeNúmero e nome dos processos cujo nome corresponde exatamente; vários nomes separados por vírgulasDuas linhas de xxsleep-a1 e uma de xxsleep-a2
cat /proc/PID/commNome do processo (até os 15 primeiros caracteres)2155 é xxsleep-longnam
killall nomeSIGTERM aos processos com esse nomeOs dois xxsleep-a1 terminaram com código de saída 0; o nome inexistente xxsleep-zz deu no process found e código de saída 1
killall -e nomeNomes com mais de 15 caracteres só quando o nome completo correspondexxsleep-longnam deu no process found; xxsleep-longname-x1 terminou
killall -v nomeMostra o resultado de cada processo que recebeu o sinalKilled xxsleep-a2(2150) with signal 15
killall -i nomePede confirmação para cada processo antes de encerrá-loAo digitar y e n, só o primeiro xxsleep-a1 terminou
killall -u nome da contaSó os processos que pertencem a essa contaEscrito junto com um nome, só o xxsleep-a1 dessa conta terminou
killall -9 nomeSIGKILL em vez de SIGTERMKilled xxsleep-a2(2173) with signal 9

📎 Outras opções: segundo o manual oficial

OpçãoTarefa
-I, --ignore-caseCompara os nomes sem diferenciar maiúsculas e minúsculas
-g, --process-groupSinal ao grupo de processos em vez do processo (uma vez por grupo)
-l, --listLista dos nomes de sinais conhecidos
-n, --ns PIDSó processos no mesmo namespace de PID desse PID; por padrão, todos os namespaces
-o, --older-than tempoSó processos iniciados antes desse tempo (unidades s, m, h, d, w, M, y)
-q, --quietNão avisa mesmo que nenhum processo tenha sido encerrado
-r, --regexpLê os nomes como expressões regulares estendidas
-s, --signal sinalSinal enviado em vez de SIGTERM
-V, --versionMostra as informações de versão
-w, --waitEspera até que todos os processos que receberam o sinal sumam
-y, --younger-than tempoSó processos iniciados depois desse tempo
-Z, --context padrãoSó processos cujo contexto de segurança corresponde ao padrão de expressão regular estendida; escrito antes dos outros argumentos; o nome pode ser omitido

🔲 Simulador do comando killall

O simulador abaixo começa com uma lista dos quatro processos xxsleep mais o xxsleep-a2 da conta de exemplo user1. Toque nos chips para comparar quais linhas somem da lista com [killall -v], [-i] e [-u]; os textos de saída do killall imitam a saída obtida no servidor Debian 12.

Simulador do comando killallpsmisc 23.4
[root@server work]#
Funciona só dentro do navegador. A lista à esquerda usa valores de exemplo, e o killall é uma imitação que segue os textos de saída obtidos no servidor Debian 12 e apaga linhas só da lista.

4️⃣ Sinais do killall

  • ↪️ A opção -s, killall -9 e os números de sinal

O sinal a enviar é escrito pelo nome, como [-HUP] ou [-SIGHUP], pelo número, como [-1], ou depois da opção -s (segundo o manual oficial). [killall -9 nome do processo] envia o sinal 9, SIGKILL. SIGKILL é um sinal que o processo não consegue capturar nem ignorar (segundo o manual oficial), então o processo termina sem conseguir fazer a limpeza. Por isso ele é enviado quando o sinal padrão, SIGTERM, não encerra o processo.

No servidor Debian 12, ao adicionar -9 junto com -v ao xxsleep-a2 iniciado de novo, apareceu uma linha com o número de sinal 9.

killall -9 -v xxsleep-a2
Killed xxsleep-a2(2173) with signal 9

Verificamos os nomes e números dos sinais com [kill -l]. O killall também tem uma opção -l que mostra os nomes de sinais que ele conhece.

kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

Ao digitar um único número, apareceu só o nome desse sinal. O 15 que o killall envia por padrão era TERM, e o 9 enviado com -9 era KILL.

kill -l 15
TERM
kill -l 9
KILL

Se você escrever um nome de sinal que não está na lista, aparece uma mensagem no formato [FOO: unknown signal; killall -l lists signals.] (segundo o manual oficial e o texto do programa).

🔢 FAQ & conteúdo recomendado

O killall é um comando do pacote psmisc, e o pkill, do pacote procps-ng, o mesmo do pgrep. O pkill procura parte do nome como expressão regular estendida, como o pgrep, enquanto o killall só lê os nomes como expressões regulares quando você adiciona -r (segundo o manual oficial).

O manual oficial do psmisc diz que, em sistemas que não são Linux, [killall nome] pode se comportar de forma diferente do esperado e que é preciso ter cuidado especial ao executá-lo com a conta de administrador. Em outros sistemas, verifique primeiro o manual desse sistema.

Há um limite para o número de nomes que você pode escrever de uma vez: o tamanho de um inteiro unsigned long multiplicado por 8. Em geral são 64 em sistemas de 64 bits e 32 em sistemas de 32 bits (segundo o manual oficial).

ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Demonstre sua humanidade: 5   +   4   =