Awalan waktu untuk setiap baris output perintah bash

1

Saya menjalankan topperintah untuk melihat detail tentang proses tertentu. Output disalurkan ke grepseperti:

top -n 1 | grep jre

Outputnya biasanya sekitar 4 baris, dan saya ingin awalan waktu saat ini untuk setiap baris sehingga akan menjadi sesuatu seperti:

Sebelum:

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

Setelah:

13:46 25-08-2012 2772 deleteme  20   0  2832 1156  872 R  2.0  0.1   0:00.01 top  
Neildeadman
sumber

Jawaban:

3

Lihatlah tsperintah dari paket moreutils :

NAME
       ts - timestamp input

SYNOPSIS
       ts [-r] [format]

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

Anda dapat misalnya menggunakannya seperti:

$ 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
Daniel Andersson
sumber
Ini sangat sederhana! WOW! Mengapa TS menambahkan baris kosong di antara entri? Ada cara untuk menghentikannya?
neildeadman
1

The psperintah lebih cocok untuk tugas semacam ini. Coba sesuatu seperti ini:

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

Dari pshalaman manual:

ps menampilkan informasi tentang pilihan proses yang aktif. Jika Anda menginginkan pembaruan berulang dari seleksi dan informasi yang ditampilkan, gunakan top (1) sebagai gantinya.

Dalam perintah yang saya sarankan, opsi '-a' memberitahu psproses pencetakan untuk semua pengguna. The -omenentukan format output. Dalam contoh saya (lagi dari pshalaman manual):

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.

Anda dapat mengubah ini sesuai dengan kebutuhan Anda. Lihat man psdan cari "SPESIFIKASI FORMAT STANDAR" (Anda dapat menggunakan pencarian vi-style di halaman manual, tekan "/" dan masukkan pola pencarian Anda, "n" akan pindah ke pertandingan berikutnya).

terdon
sumber
1
Itu sempurna! Lagi pula untuk memasukkan header? Saya menyadari grep menghentikan ini, tetapi ada cara lain?
neildeadman
Sebenarnya, itu tidak berfungsi dengan baik. jika saya hanya menjalankan perintah top& grepbersama-sama (yaitu tanpa Anda baris) tampaknya menunjukkan hasil lebih banyak ....
neildeadman
@neildeadman Ini akan menampilkan lebih banyak baris jika Anda tidak menggunakan -n1opsi.
terdon
tetapi dengan -n 1dan bukan perintah tambahan Anda ini menunjukkan 4 baris, tetapi dengan baris tambahan Anda dan -n 1itu menunjukkan 1 baris dan kadang-kadang 3 atau 4.
neildeadman
@neildeadman Masalah lain adalah output dari topaneh. Itu memanipulasi terminal entah bagaimana. Jika Anda memberi tahu saya apa sebenarnya yang perlu Anda lakukan (informasi apa yang Anda inginkan dari header teratas misalnya), saya seharusnya dapat memberi Anda perintah kerja menggunakan ps.
terdon