Чи є спосіб отримати «верхній», щоб запустити рівно один раз і вийти?


13

Я вважаю, що вихід команди оболонки topє простим і звичним способом отримати грубе уявлення про стан здоров'я машини. Я хотів би подати topвисновок (або щось подібне до нього) з крихітного веб-сервера на машині для цілей моніторингу.

Чи є спосіб отримати верх, щоб написати свій текстовий висновок рівно один раз , не форматуючи символи? Я спробував це:

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

Це, здається, близьке до того, що я хочу, за винятком того, що (1) немає гарантії, що я не отримаю більше або менше одного скріншота інформації та (2) мені доведеться викреслити всі символи форматування терміналу.

Або є якась інша topподібна команда, в якій перераховані відомості про пам’ять на рівні машини та на рівні процесора / використання процесора / час роботи?

(В ідеалі, я б хотів, щоб стратегія була портативною для Linux і Mac OS X, оскільки наші розробники використовують Macs, а наше середовище prod - це Linux.)

Відповіді:


23

У Linux ви можете спробувати це:

top -bn1 > output.txt

Від 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.

З ОС X спробуйте:

top -l 1

З верхньої сторінки OSX :

 -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.

Це виглядає як саме відповідь, яку я б шукав, якби topв OS X підтримувався прапор -b. :-( На жаль, це не так, і я не бачу версії, topдоступної через домашню мову. Це здається точно правильною відповіддю для Linux, т.
Ч.

@Mickalot: Дивіться моє оновлене. Чи можете ви встановити GNU top в Mac OSX?
cuonglm

@Gnuoc: /usr/bin/top -l 1на OSX 10.9.4 ідеально ... дякую! Щодо встановлення GNU top, я міг би встановити його на своїй машині, але мені доведеться переконати інших розробників встановити його на своїх машинах, щоб мій код працював на них, тому я вважаю за краще цього уникнути. (Якщо це не доступно через домашню мову, буде опір.) Тепер, коли я буду переходити на основі платформи, я буду жадібним ... чи знаєте ви про будь-який напівеквівалент Windows, так що ці чорти (у нас є декілька) може також мати сторінку з необоротним статусом? (Якщо ні, то це добре, ваша відповідь вже супер-корисна!)
Мікалот

@Mickalot: Запам’ятайте примітку з верхньої сторінки OSX. Зверніть увагу, що перший відображений зразок матиме недійсний% CPU для кожного процесу, оскільки він обчислюється за допомогою дельти між зразками. . Користувачі Windows, можливо, ви можете використовувати `` cygwin`
cuonglm

@Gnuoc Дякую за додатковий бал. Я гадаю, що я можу зробити top -l 2і викинути першу сторінку зразків?
Мікалот

1

Щоб отримати подібні номери типів із системи Windows, вам потрібно буде ознайомитися з посиланням.

Просто, щоб отримати список процесів, які ви і подивіться get-process. Погляньте на цю посилання .

При цьому деякі подальші пошуки, знайшли хорошу команду трохи тут .

Що, якщо ви виймете з представленого циклу while, для ваших потреб буде:

ps | sort -desc cpu | select -first 30

psв powershell - псевдонім для get-process.


Це звучить як чудова ідея! Я
змушу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.