Manipulação de Horas [RESOLVIDO]

1. Manipulação de Horas [RESOLVIDO]

Jean
jckpiumbini

(usa Debian)

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


  


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

Perfil removido
removido

(usa Nenhuma)

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]

Jean
jckpiumbini

(usa Debian)

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]

Perfil removido
removido

(usa Nenhuma)

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]

Jean
jckpiumbini

(usa Debian)

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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts