Tempo de prefixo para cada linha de saída do comando bash

1

Estou executando o comando top para ver detalhes sobre processos específicos. A saída é canalizada para grep da seguinte forma:

top -n 1 | grep jre

A saída é geralmente em torno de 4 linhas, e eu gostaria de prefixar a hora atual para cada linha, assim seria algo como:

Antes:

2772 deleteme  20   0  2832 1156  872 R  2.0  0.1   0:00.01 top  

Depois:

13:46 25-08-2012 2772 deleteme  20   0  2832 1156  872 R  2.0  0.1   0:00.01 top  
    
por neildeadman 28.08.2012 / 16:18

2 respostas

3

Veja o comando ts do pacote moreutils :

NAME
       ts - timestamp input

SYNOPSIS
       ts [-r] [format]

DESCRIPTION
       ts adds a timestamp to the beginning of each line of input.

Você pode, por exemplo use-o como tal:

$ top -n 1 | grep init | ts
aug 28 17:15:00     1 root      20   0 24448 2272 1340 S    0  0.1   0:01.07 init
    
por 28.08.2012 / 17:15
1

O comando ps é mais adequado para esse tipo de tarefa. Tente algo assim:

$ ps -ao bsdstart,fuser,pid,%cpu,%mem,args | grep jre

Na página ps man:

ps displays information about a selection of the active processes. If you want a repetitive update of the selection and the displayed information, use top(1) instead.

No comando que sugeri, a opção '-a' informa ps para imprimir processos para todos os usuários. O -o especifica o formato de saída. No meu exemplo (novamente na página ps man):

bsdstart : time the command started.  If the process was
                             started less than 24 hours ago, the output format
                             is " HH:MM", else it is " Mmm:SS" (where Mmm is
                             the three letters of the month).  See also
                             lstart, start, start_time, and stime.

fuser    :  filesystem access user ID.  This will be the
                             textual user ID, if it can be obtained and the
                             field width permits, or a decimal representation
                             otherwise.
pid      :  a number representing the process ID (alias tgid).

%cpu     :  cpu utilization of the process in "##.#" format.
                             Currently, it is the CPU time used divided by the
                             time the process has been running
                             (cputime/realtime ratio), expressed as a
                             percentage.  It will not add up to 100% unless
                             you are lucky.  (alias pcpu).
%mem     :  ratio of the process's resident set size  to the
                             physical memory on the machine, expressed as a
                             percentage.  (alias pmem).

args     : command with all its arguments as a string.
                             Modifications to the arguments may be shown.  The
                             output in this column may contain spaces.  A
                             process marked <defunct> is partly dead, waiting
                             to be fully destroyed by its parent.  Sometimes
                             the process args will be unavailable; when this
                             happens, ps will instead print the executable
                             name in brackets.  (alias cmd, command).  See
                             also the comm format keyword, the -f option, and
                             the c option.
                             When specified last, this column will extend to
                             the edge of the display.  If ps can not determine
                             display width, as when output is redirected
                             (piped) into a file or another command, the
                             output width is undefined (it may be 80,
                             unlimited, determined by the TERM variable, and
                             so on).  The COLUMNS environment variable or
                             --cols option may be used to exactly determine
                             the width in this case.  The w or -w option may
                             be also be used to adjust width.

Você pode alterar isso para atender às suas necessidades. Dê uma olhada em man ps e procure por "STANDARD FORMAT SPECIFIERS" (você pode usar a busca no estilo vi em man pages, pressionar "/" e digitar seu padrão de busca, "n" irá para a próxima coincidência).

    
por 28.08.2012 / 16:24

Tags