Localizar e Matar Determinado Processo Pelo Nome

Publicado por Cássio Silva Oliveira 01/02/2008

[ Hits: 25.969 ]

Homepage: https://www.linkedin.com/in/cassioso/

Download process_kill_file.sh




Script utilizado para matar um processo específico, identificando seu PID a partir de seu nome.


Utiliza um arquivo temporário para armazenar o PID.

  



Esconder código-fonte

#!/bin/sh
#Autor: Cássio Silva Oliveira - cassioso
# Janeiro 2008

#nome do processo
  PROCESS_NAME=WatchDog
#pasta onde o arquivo com a informação do PID do processo ficará armazenado temporariamente
  TEMP_DIR=/home/cassioso/tmp
  echo 'Parando Processo $PROCESS_NAME'
#cria o arquivo, captura o PID do processo e salva no arquivo
  PID_FILE=processtokill.pid
  ps -U root -o "%p : %a"| grep $PROCESS_NAME | grep java | awk '{ print $1 }' > $TEMP_DIR/$PID_FILE
#permite total manipulação do arquivo
  chmod 777 $TEMP_DIR/$PID_FILE
#recupera o PID do processo no arquivo
  PROCESS=`cat $TEMP_DIR/$PID_FILE`
  echo Process = $PROCESS
#mata o processo
  kill -9 $PROCESS
#remove o arquivo temporario
  rm -f $TEMP_DIR/$PID_FILE

Scripts recomendados

Instalador de Código Fonte - Linha de Comando

Script de controle do Alfresco para RHEL / CentOS / Fedora

Disponibilidade de impressoras de rede

Limpar arquivos core

Front-end para o Samba


  

Comentários
[1] Comentário enviado por edirlf em 01/02/2008 - 07:52h

Não seria mais fácil um:

$killall -u usuário programa

falows cara.

[2] Comentário enviado por elgio em 04/02/2008 - 22:57h

Primeiro script em shell?

Como disse o edirlf, já se tem o killall que faz isto.
Ainda, no teu script não entendi porque tu usou arquivo temporário. Variáveis seriam muito melhores. Até porque ele NÃO FUNCIONA se não existir o diretório.

E porque o grep java?

Veja, este teu script soluciona apenas um problema teu, não um problema de forma genérica.

Mesmo existindo o killall:

kill -9 `ps auxc|grep PROGRAMA | sed 's/^[^ ]\+ \+\([0-9]\+\) .\+$/\1/'`

Uma linha apenas!!!!

[3] Comentário enviado por cassioso em 07/10/2008 - 11:25h

Olá,


"...Variáveis seriam muito melhores..."

Como faria para jogar a saída de um comando para uma variável?

[4] Comentário enviado por Miojo em 13/10/2009 - 18:36h

VARIAVEL=`comando`

[5] Comentário enviado por andrecanhadas em 19/05/2011 - 16:23h

Complementando o script do elgio e respondendo ao Cassiano. Que tal assim que funciona para varios:
#!/bin/sh
# inicio
echo "Digite o nome do processo:" ; read processo
kill -9 `ps auxc|grep $processo | sed 's/^[^ ]\+ \+\([0-9]\+\) .\+$/\1/'`
# fim
Salve em /usr/local/bin ou usr/bin
de permissão para executar chmod a+x nome_arquivo

[6] Comentário enviado por aleedss em 24/08/2016 - 09:39h

Neste comando para matar processos "kill -9 `ps auxc|grep $processo | sed 's/^[^ ]\+ \+\([0-9]\+\) .\+$/\1/'`" o que quer dizer: 's/^[^ ]\+ \+\([0-9]\+\) .\+$/\1/'` ? Dessa forma ele irá ler algum arquivo? Não consegui entender. Obrigado


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts