Pular para o conteúdo

Manipulação de Horas [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Manipulação de Horas [RESOLVIDO]

Enviado em 19/02/2015 - 14:48h

Boa tarde,

Estou pegando a hora que um programa iniciou,
TIME=`ps aux | grep '[t]op' | awk '{print $9}'`,
agora preciso somar mais dez minutos nessa variável.
Por exemplo, se o top começou a rodar as 10:40,preciso saber quanto que da 10:40 + 10 minutos.

Obrigado

Responder tópico

2. Re: Manipulação de Horas [RESOLVIDO]

Enviado em 19/02/2015 - 16:17h

jckpiumbini escreveu:

Boa tarde,

Estou pegando a hora que um programa iniciou,
TIME=`ps aux | grep '[t]op' | awk '{print $9}'`,
agora preciso somar mais dez minutos nessa variável.
Por exemplo, se o top começou a rodar as 10:40,preciso saber quanto que da 10:40 + 10 minutos.

Obrigado
A variável $TIME está recebendo um estimativa acumulada de horas de processamento. Dê uma olhada no manual do ps.

Você pode tentar pegar a hora que um processo começou ou com ps ou direto no /proc/:


# ps --no-headers -C init -o start

# stat -c '%z' /proc/$(pidof init)
Para fazer os cálculos, transforme as datas em segundos e depois converta de volta para apresentação.

3. Re: Manipulação de Horas [RESOLVIDO]

Enviado em 19/02/2015 - 16:23h

Com o awk '{print $9}' eu pego a hora que ele iniciou. Eu consegui resolver agora, subtraindo a hora atual, da hora que o processo começou.

TIME=`ps aux | grep '[t]op' | awk '{print $9}'`
TIME_CURRENT=`date +"%H:%M"`
sec_old=$(date -d "1970-01-01 $TIME:00" +%s)
sec_new=$(date -d "1970-01-01 $TIME_CURRENT:00" +%s)
TIME_ALIVE=$(( (sec_new - sec_old) / 60)

Muito obrigado

4. Re: Manipulação de Horas [RESOLVIDO]

Enviado em 19/02/2015 - 16:44h

jckpiumbini escreveu:

Com o awk '{print $9}' eu pego a hora que ele iniciou. Eu consegui resolver agora, subtraindo a hora atual, da hora que o processo começou.

TIME=`ps aux | grep '[t]op' | awk '{print $9}'`
TIME_CURRENT=`date +"%H:%M"`
sec_old=$(date -d "1970-01-01 $TIME:00" +%s)
sec_new=$(date -d "1970-01-01 $TIME_CURRENT:00" +%s)
TIME_ALIVE=$(( (sec_new - sec_old) / 60)

Muito obrigado
Você foi pego por uma coincidência. Faça teste com outros processos como o init por exemplo. Considere também o fato de que processos podem iniciar e continuar rodando por dias, meses e até anos. Utilize letras maiúsculas apenas para variáveis de ambiente.

5. Re: Manipulação de Horas [RESOLVIDO]

Enviado em 19/02/2015 - 16:58h

No meu caso, vou controlar para que um processo, específico, permaneça vivo, por apenas um terminado tempo. Por isso vou fazer desta forma. Dei o exemplo do top, seria a mesma coisa. Desta forma sempre será a posição 9 que eu vou pegar.

Muito obrigado pela dica.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder