Um kill diferente

Publicado por Vinicius Miqueloti (última atualização em 05/01/2012)

[ Hits: 6.273 ]

Homepage: http://www.targetso.com/portal/

Download kill.sh




Desenvolvi um script que tem por finalidade matar um processo através do 'comando/parte do comando' que foi utilizado para iniciar este mesmo processo.

O script foi criado para solucionar o problema onde eu deveria iniciar um script em java que roda (em um servidor com diversas aplicações) às 00:00 horas e matá-lo às 06:00, o problema era a lentidão das aplicações ao rodar o script java pois o mesmo sobrecarregava o banco de dados e a JVM tornando-o impraticável o uso das aplicações.

O uso deste script para mim é agendar uma tarefa com o at em um determinado horário e matar após um outro horário, e o uso segue da seguinte forma:

ex:
#inicio do processo
at 00:00
cd /diretorio_onde_esta_meu_script/
php meu_script_20120104.php

#fim do script
at 06:00
cd /diretorio_onde_esta_o_kill.sh/
./kill.sh 120104.php

#fim do exemplo

Como podem ver, matei o script.php utilizando um pequeno trecho do comando que foi executado, neste caso o comando executado foi php meu_script_20120104.php e para matar utilizei apenas 120104.php

Deve-se ter cuidado com a utilização para não matar coisas indevidas, se você der um ./kill.sh a irá matar todos os processos que contiverem a letra a!

Ainda irei incrementar mais funções como uma opção que permita o kill.sh rodar mais de uma vez caso o script que queira matar esteja sendo executado em diversas instâncias, no entanto, a principio pode utilizar diversas vezes que matará por ordem de pid.

  



Esconder código-fonte

#!/bin/bash
# Mata um processo atraves do parametro passado, que deve ser parte do comando
# utilizado para iniciar o processo.

# Verifica se foi passado o parametro
if [ $# -ne 1 ]; then
   echo "USO: ./kill.sh parte_do_comando_a_killar"
   exit
fi

# Obtem o pid do processo a 'killar'
VAR0=$(ps -ef | grep $1 | cut -d" " -f6 | sort | head -1);

# Mata o processo de acordo com o parametro ordenado por pid menor
kill -9 $VAR0;

Scripts recomendados

cria_users.sh

BC - ScreenGet

Download automatizado do instalador do AVG Free

Script para bootsect.lnx

setwall - mude o wallpaper


  

Comentários
[1] Comentário enviado por fabiocax em 06/01/2012 - 09:30h

Bom dia Vinicius,

Muito bom seu script. Gostaria de lembrar que o comando abaixo faz o mesmo procedimento:

kill -9 `pgrep -f parte_do_comando_a_killar`

att.
Fábio Alberti

[2] Comentário enviado por Miqueloti em 06/01/2012 - 11:51h

Interessante a dica Fábio, estava tentando utilizar comandos que obtinham o pid do processo em questão e tentava utilizar o pipe para enviar o pid para o kill. Nunca vi esta abordagem com a crase, agora que pesquisei fiquei sabendo que pode se executar um comando e passar a saída para outro a ser executado com elas. Sou iniciante ainda e é interessante saber que há esta outra forma de passar parâmetro para um outro comando.

Obrigado!


Contribuir com comentário