Có cách nào để có được các đầu trang trên đỉnh cao chạy một lần và thoát không?


13

Tôi thấy đầu ra của lệnh shell toplà một cách đơn giản và quen thuộc để có được một ý tưởng sơ bộ về sức khỏe của máy. Tôi muốn phục vụ topđầu ra (hoặc một cái gì đó rất giống với nó) từ một máy chủ web nhỏ trên máy cho mục đích giám sát thô.

Có cách nào để có được đầu trang để viết đầu ra văn bản của nó chính xác một lần , mà không cần định dạng ký tự? Tôi đã thử điều này:

(sleep 1; echo 'q') | top > output.txt

Điều này dường như gần với những gì tôi muốn, ngoại trừ rằng (1) không có gì đảm bảo rằng tôi sẽ không nhận được nhiều hơn hoặc ít hơn một màn hình thông tin và (2) tôi phải loại bỏ tất cả các ký tự định dạng đầu cuối.

Hoặc có một số toplệnh giống như khác liệt kê cả thông tin về thời gian sử dụng / bộ nhớ / mức sử dụng CPU / mức toàn bộ máy?

(Lý tưởng nhất là tôi thích một chiến lược có thể di chuyển cho cả Linux và Mac OS X, vì các nhà phát triển của chúng tôi sử dụng máy Mac và môi trường prod của chúng tôi là Linux.)

Câu trả lời:


22

Trong Linux, bạn có thể thử điều này:

top -bn1 > output.txt

Từ man top:

-b : Batch-mode operation
            Starts top in 'Batch' mode, which could be useful for sending
            output from top to other programs or  to  a  file.   In  this
            mode, top will not accept input and runs until the iterations
            limit you've set with the '-n' command-line option  or  until
            killed.
....
-n : Number-of-iterations limit as:  -n number
            Specifies  the  maximum  number of iterations, or frames, top
            should produce before ending.

Với OS X, hãy thử:

top -l 1

Từ trang chủ OSX hàng đầu :

 -l <samples>
              Use logging mode and display <samples> samples, even if 
              standard output is a terminal. 0 is treated  as  infinity.   
              Rather than redisplaying, output is periodically printed in 
              raw form. Note that the first sample displayed will have an 
              invalid %CPU displayed for each process,  as it is calculated 
              using the delta between samples.

Đây giống như câu trả lời mà tôi sẽ tìm nếu toptrên OS X hỗ trợ cờ -b. :-( Đáng buồn thay, nó không, và tôi không thấy một phiên bản topcó sẵn thông qua homebrew. Đây dường như là câu trả lời chính xác cho Linux, tho.
Mickalot

@Mickalot: Xem cập nhật của tôi. Bạn có thể cài đặt GNU top trong Mac OSX không?
cuonglm

@Gnuoc: /usr/bin/top -l 1trên OSX 10.9.4 là hoàn hảo ... cảm ơn! Đối với việc cài đặt GNU top, tôi có thể cài đặt nó trên máy của mình , nhưng tôi phải thuyết phục các nhà phát triển khác cài đặt nó trên máy của họ để mã của tôi hoạt động cho họ, vì vậy tôi nên tránh điều đó. (Nếu nó không có sẵn thông qua homebrew, sẽ có sự kháng cự.) Bây giờ tôi sẽ chuyển đổi dựa trên nền tảng, tôi sẽ tham lam ... bạn có biết về bất kỳ nhà phát triển tương đương Windows nào không một vài) cũng có thể có một trang trạng thái thô? (Nếu không, điều đó tốt thôi, câu trả lời của bạn đã rất hữu ích!)
Mickalot

@Mickalot: Hãy nhớ ghi chú từ trang chủ OSX, Lưu ý rằng mẫu đầu tiên được hiển thị sẽ có% CPU không hợp lệ được hiển thị cho mỗi quy trình, vì nó được tính bằng cách sử dụng delta giữa các mẫu. . Với người dùng Windows, có lẽ bạn có thể sử dụng `` cygwin`
cuonglm

@Gnuoc Cảm ơn bạn đã thêm điểm. Tôi cho rằng tôi có thể làm top -l 2và vứt bỏ trang đầu tiên của mẫu?
Mickalot

1

Để có được số loại tương tự từ một hệ thống Windows, bạn sẽ muốn xem qua powershell.

Chỉ để có được một danh sách các quá trình bạn và xem xét get-process. Hãy xem tài liệu tham khảo này .

Khi thực hiện một số tìm kiếm khác, tìm thấy một lệnh nhỏ đẹp ở đây .

Mà nếu bạn đưa ra khỏi vòng lặp while, thì nhu cầu của bạn sẽ là:

ps | sort -desc cpu | select -first 30

pstrong powershell là một bí danh cho get-process.


Có vẻ là một ý tưởng tuyệt vời! Tôi sẽ nhờ một trong những đồng nghiệp có Windows của mình dùng thử ...
Mickalot
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.