Como agendar o inicio e o fim de um processo? [RESOLVIDO]

1. Como agendar o inicio e o fim de um processo? [RESOLVIDO]

Vinicius Miqueloti
Miqueloti

(usa Lubuntu)

Enviado em 02/01/2012 - 15:56h

Olá gente,

Em meu trabalho eu tenho que preparar scripts para serem executados em um servidor solaris via SSH, até ai tudo bem.

O problema é que estão alegando lentidão das demais aplicações quando os meus scripts rodam (devido a utilização intensa dos BD's) e me restringiram a executar os scripts apenas entre 00:00 às 06:00.

Os scripts muitas vezes não terminam de efetuar todo o seu trabalho de manipulação de dados neste intervalo de tempo, sendo necessário assim matar o script (sim, não permitiram nem deixar em STOP, preciso matá-lo).

Para iniciar o processo é fácil, eu agendo o comando que inicializa o script no terminal utilizando o at.

Minha dúvida é, como agendar a morte de um processo que ainda nem nasceu? Como obter o pid deste processo que ainda será iniciado para que eu possa matar este às 06:00?

Informações a serem consideradas:
1- Os scripts são em java, poderia dar um pkill -9 java e resolveria o problema matando todos os processos java da maquina, se não fosse o fato da Virtual Machine que reside na mesma. Existe alguma forma de tornar o processo da VM indestrutível ao pkill -9 java? isto resolveria o problema!

2- Consigo listar o pid de meu script utilizando o comando "ps -ef | grep nome_do_script | awk '{print $2}' | head -1" só que não consigo utilizar o retorno deste pid com o comando kill. Queria poder fazer algo deste tipo: kill -9 | ps -ef | grep nome_do_script | awk '{print $2}' | head -1

Bem, é esta a minha duvida gente, peço desculpas pela dificuldade de expressar o meu problema, mais tentei deixar da forma mais clara possível, mesmo me prolongando demasiadamente no tópico.

__________________________________________________

Editando: Consegui obter o pid, só que o comando kill não está funcionando no at. como executar um kill no at?

segue meu at para matar os processos:

bash-2.03# at 00:00
at> VAR0=$(ps -ef | grep Feeder | awk '{print $2}' | sort | head -1)
at> kill -9 $VAR0
at> VAR0=$(ps -ef | grep Feeder | awk '{print $2}' | sort | head -1)
at> kill -9 $VAR0
at> <EOT>
commands will be executed using /bin/csh
job 1325530380.a at Mon Jan 3 00:00:00

Só que não está funcionando, se eu digitar no terminal o comando ele mata o processo, agendando com at não funciona. Li que o awk possui problemas para funcionar com o crontab, portanto modifiquei o comando para VAR0=$(ps -ef | grep Feeder | cut -d" " -f6 | sort | head -1) só que também não executou. Alguém sabe me dizer como executar um kill com at?

___________________________________________________

Editando: Resolvido o problema!!! Pelo que eu percebi creio que não se pode utilizar variaveis dentro das tarefas agendadas, portanto fiz um arquivo chamado kill.sh com o conteúdo abaixo:

VAR0=$(ps -ef | grep Feeder | cut -d" " -f6 | sort | head -1)
kill -9 $VAR0

e na hora de agendar o kill da tarefa é só chamar o script como abaixo:

./kill.sh

Peço desculpas por deixar sujo este tópico, mais consegui a solução para o problema!


  


2. Re: Como agendar o inicio e o fim de um processo? [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 03/01/2012 - 11:20h

Tópico sujo? Jamais isso!
Você ensinou muitos usuários aqui a aprender um pouco mais sobre o at.
E da pra ver que vc é um usuário que corre atrás dos seu problemas técnicos e não apenas fica pedindo para tirarem suas dúvidas!
Parabéns!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts