#!/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
[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/'`
[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