Comando CentOS - killall (para matar todos os processos com nomes que correspondem a um determinado padrão)

18

Recentemente, comecei a usar o CentOS. Fui tentar usar o killallutilitário, mas o encontrei ausente, recebendo uma command not foundmensagem ao tentar usá-lo. Como posso obter essa funcionalidade no meu sistema para poder, por exemplo, eliminar todos os processos cujos nomes correspondem a um padrão?

Michael Ohlrogge
fonte

Respostas:

24

O pkillutilitário é uma alternativa muito melhor para killall. killallnão é portátil, pois o comportamento do comando é muito diferente nos sistemas operacionais. pkillé portátil e se comporta da mesma maneira em todos os lugares. Também é muito mais flexível, pois oferece várias maneiras diferentes de combinar os processos. Ele também compartilha o mesmo comportamento e argumentos de correspondência que o pgreputilitário , o que permite ver quais processos seriam correspondidos e sinalizados sem realmente sinalizá-los.

Uso: pkill foo(que seria o mesmo que killall foo)

Patrick
fonte
2
Eu acho que essa resposta teria sido melhor se mostrasse exatamente como alguém pode usá-la para substituir killall.
exebook 14/11
Porém, nem todas as implementações pgrepsuportam a -qopção de ficar quieto.
Kusalananda
também seria melhor se descrevesse de que pacote faz parte
Xalorous 1/11
21

O PSmisc contém o killallutilitário, juntamente com algumas outras ferramentas pequenas e úteis. Pode ser adicionado simplesmente com

yum install psmisc
Michael Ohlrogge
fonte
2

Além da solução de Patrick, a funcionalidade do comando killall pode ser replicada com o seguinte:

pkill -15 [process name]

Por exemplo, para matar todos os processos em cache do memcached, escreva-se o seguinte:

pkill -15 memcached

O '-15' é a representação numérica de um sinal SIGTERM POSIX. Para obter uma lista de todos os sinais POSIX que podem ser disparados em um processo, use o seguinte comando:

kill -l

Isso retornará a seguinte tabela:

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

Mais informações sobre o que cada sinal faz podem ser encontradas aqui .

Daniel Kay
fonte
Note que killallenvia o TERMsinal por padrão, não KILL.
Kusalananda
11
Bom ponto. Editado.
Daniel Kay
Por que você editou apenas para remover 'Espero que isso ajude!' do final, @Rui F Ribeiro? Existem regras da comunidade contra tentar ser educado?
Daniel Kay
0

Eu imagino que a alternativa systemd é systemctl halt(abreviação de systemctl isolate halt.target)?

Xalorous
fonte