shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Verificar se um serviço está rodando


From: Fernando Gottlieb
Subject: Re: [shell-script] Verificar se um serviço está rodando
Date: Tue, 25 Sep 2007 14:27:28 -0300

Boa tarde pessoal!
Agradeço imensamente a atenção de vcs, muito obrigado!
O que verifiquei até agora:
Quando o mencoder é inicializado, isto é, executo o comando para gravação de
vídeo, o scrip para e só retoma a execução no final do comando.
E não é possível inicializar outra instância do mencoder porque é feito
acesso a hardware e a próxima instância só rodará quando o hardware estiver
livre.
Esta é a linha que executa o comando:

# Inicia o processo de gravacao
mencoder tv:// -tv
driver=v4l2:input=0:normid=4:channel=12:chanlist=us-bcast:width=320:height=240:fps=15:device=/dev/video0:adevice=/dev/audio:audiorate=16000:forceaudio:forcechan=2:buffersize=64
-quiet -oac mp3lame -lameopts preset=medium -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=600:keyint=132 -vf pp=lb -endpos $recordtime -o
$caminho$arquivo

Informação: Pelo que vi até agora, o cron inicializa no primeiro ou segundo
segundo (1s ou 2s) do minuto em que estiver programado.

Como o tempo de gravação é crítico, não posso (ou não devo) perder conteúdo,
a rotina de cálculo de tempo de gravação deve ser precisa, e isto eu pareço
ter conseguido com este código:

hora=00
minuto=00
segundo=00

# Verifica se minuto e segundo atuais sao 00 (00:00)
if [ $(date +"%-M") -eq 0 ] && [ $(date +"%-S") -eq 0 ]
then
# Se valido, entao gravara uma hora completa (01:00:00)
# mas para que o calculo de sec seja valido, minuto = 60, para nao ocorrer o
calculo
# 3600 - 0, minuto sendo 60, entao sec = 0
  segundo=00
  minuto=60
  hora=01
# caso minuto ou segundo sejam diferente de 0, entao o tempo de gravacao
# e menor que uma hora 00:xx:xx
else
# neste caso, hora = 00, minuto e segundo recebem a hora atual
  segundo=$(date +"%-S")
  minuto=$(date +"%-M")
  hora=00
fi

# Obtem a diferenca (o que falta) para completar uma hora (em segundos)
sec=$((((3600 - ((minuto * 60)))) - $segundo))

# Dividindo os segundos faltantes por 60, obtem-se os minutos faltantes
# O resto da divisao dos segundos por 60, obtem-se os segundos faltantes
recordtime=$hora:$((sec / 60)):$((sec % 60))

Para acompanhar o processo, desta vez criei uma rotina externa com esta
chamada diretamente no crontab:

59 * * * *     root    /home/kurumin/testemencoder.sh

... e o sript:

pidofmencoder=$(pidof mencoder)
for ((i=1;i=300;i++))
do
echo "Mencoder PID = " $pidofmencoder " Data = " $(date +"%d/%m/%y") " Hora
= " $(date +"%H:%M:%S") >> /home/kurumin/testemencoder.txt
sleep 1
done

Para saber exatamente (Hora:Minuto:Segundo) em que momento ocorreu a
transição do serviço.
Com isto ficarei sabendo qual o momento em que o primeiro serviço parou e
quando o próximo começou, num período de 5 minutos, ou seja, um minuto antes
da hora cheia (xx:59) e quatro minutos depois.

Caso tenham alguma dica, por favor sintam-se à vontade.

Abraços


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]