Como obter o timestamp atual ao usar 'ps' em um script Bash?

0

Estou escrevendo um script de shell que executa todos os processos atuais e os canaliza para grep para filtrar aqueles que eu preciso.

Mas também preciso que ele forneça um timestamp, quando ocorre o ps ou quando o processo foi iniciado. Não importa, eu só preciso de um tempo. Todos os processos levam apenas frações de segundo.

Meu comando é este:

ps -U USERNAME -o rss=MEM,comm=CMD,pid=PID

Eu tentei ir como

ps -U USERNAME -o rss=MEM,comm=CMD,pid=PID, start=START

mas isso apenas me dá um tempo como hh:mm:ss . Eu preciso de algo mais preciso que isso. Timestamps são ideais.

O que devo fazer?

    
por user979344 12.03.2012 / 20:39

2 respostas

1

Como você precisa de um tempo mais preciso que os segundos, você pode gerar seu próprio timestamp com:

date +%Y%m%d%H%M%s.%N

tenha em mente que a própria data leva ~ .001s para rodar (dependendo do sistema), então os nanossegundos podem não ser o número correto de dígitos significativos.

ou você pode procurar em / proc / $ THIS_PID / stat usando stat para ver a hora de início de / init, podemos usar:

stat -c %x /proc/1/stat

%x   Time of last access
%X   Time of last access as seconds since Epoch
%y   Time of last modification
%Y   Time of last modification as seconds since Epoch
%z   Time of last change
%Z   Time of last change as seconds since Epoch

2012-03-10 12: 18: 45.328784363 +0800

embora, se os processos forem realmente rápidos, pode estar faltando no momento em que você chegar a ele, este seria o caso de outras soluções também, mas você pode querer verificar se o arquivo existe primeiro

    
por 13.03.2012 / 03:10
0

Tente usar ps -ef , isso deve dar a data e hora de início

    
por 12.03.2012 / 21:02