Câu hỏi Tiền tố thời gian cho mỗi dòng đầu ra lệnh bash


Tôi đang chạy top lệnh để xem chi tiết về các quy trình cụ thể. Đầu ra được chuyển đến grep như vậy:

top -n 1 | grep jre

Đầu ra thường là khoảng 4 dòng, và tôi muốn tiền tố thời gian hiện tại cho mỗi dòng vì vậy nó sẽ là một cái gì đó như:

Trước:

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

Sau:

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

1
2017-08-28 14:18


gốc




Các câu trả lời:


Nhìn vào ts lệnh từ nhiều hơn gói:

NAME
       ts - timestamp input

SYNOPSIS
       ts [-r] [format]

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

Bạn có thể ví dụ: sử dụng nó như vậy:

$ 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

3
2017-08-28 15:15



Điều này thật đơn giản! WOW! Tại sao TS thêm một dòng trống giữa các mục? Bất kỳ cách nào để ngăn chặn điều đó? - neildeadman


Các ps lệnh phù hợp hơn cho loại nhiệm vụ này. Hãy thử một cái gì đó như thế này:

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

Từ ps trang người đàn ông:

ps hiển thị thông tin về một lựa chọn của các quá trình hoạt động. Nếu   bạn muốn có một bản cập nhật lặp đi lặp lại của lựa chọn và hiển thị   thông tin, sử dụng hàng đầu (1) để thay thế.

Trong lệnh tôi đã đề xuất, tùy chọn '-a' cho biết ps để in các quy trình cho tất cả người dùng. Các -o xác định định dạng đầu ra. Trong ví dụ của tôi (một lần nữa từ ps trang người đàn ông):

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.

Bạn có thể thay đổi điều này cho phù hợp với nhu cầu của bạn. Hãy xem man ps và tìm kiếm "TIÊU CHUẨN ĐỊNH DẠNG TIÊU CHUẨN" (bạn có thể sử dụng tìm kiếm kiểu vi trong trang người đàn ông, nhấn "/" và nhập mẫu tìm kiếm của bạn, "n" sẽ chuyển sang kết quả tiếp theo).


1
2017-08-28 14:24



Đó là hoàn hảo! Dù sao để bao gồm các tiêu đề? Tôi nhận ra grep dừng lại, nhưng cách nào khác? - neildeadman
Trên thực tế, nó không hoạt động đúng. nếu tôi chỉ chạy top & grep các lệnh cùng nhau (nghĩa là không có bạn) có vẻ như hiển thị nhiều kết quả hơn .... - neildeadman
@neildeadman Nó sẽ hiển thị nhiều dòng hơn nếu bạn không sử dụng -n1 Tùy chọn. - terdon
nhưng với -n 1 và không phải các lệnh bổ sung của bạn, nó hiển thị 4 dòng, nhưng với các dòng bổ sung của bạn và -n 1 nó hiển thị 1 dòng và đôi khi 3 hoặc 4. - neildeadman
@neildeadman Một vấn đề khác là đầu ra của top lạ. Nó thao túng thiết bị đầu cuối bằng cách nào đó. Nếu bạn cho tôi biết chính xác bạn cần làm gì (ví dụ bạn muốn thông tin nào từ các tiêu đề của đầu), tôi sẽ có thể cung cấp cho bạn một lệnh làm việc bằng cách sử dụng ps. - terdon