Um kill diferente

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

[ Hits: 5.771 ]

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

Gerenciar hosts virtuais do Apache

Enviar e-mails

Convertendo rmvb para avi

Atualizador de sistema multipla escolha

Achar IP 1.1


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts