Поиск использования ЦП из верхней команды

В настоящее время я использую

top -b -d 1 > file1.csv

для добавления всего вывода в файл csv. Однако я бы хотел, чтобы поле Cpu (% us) было введено в файл1. Я дошел до этого:

top -b -d 1|grep Cpu 

, где я могу просматривать только запись Cpu.

Когда я пытаюсь выполнить

top -b -d 1|grep Cpu > file1.csv

, он не работает, поскольку я даже не могу просмотреть файл.

Мое намерение график LiveGraph для всех значений ЦП (хранится в файле csv) динамически. Спасибо!

5
задан 18 October 2011 в 19:55

9 ответов

Для общего использования ЦП:

Если вы ТОЛЬКО хотите использовать CPU, вы можете попробовать следующее:

top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f3|cut -d '%' -f1 > file1.csv

Это даст вам только значение ЦП и обновить значение в файле. Если вы хотите ПРИЛОЖИТЬ данные в файл (так как я вижу, что вы называете его файлом csv), вместо одного> используйте два, например >> file1.csv.

Для каждого потока и использования ЦП: ! d4]

Сначала вам нужно устранить остальные столбцы, чтобы получить данные о CPU.

Запустите top и нажмите f. В этом меню вы выбираете, какие столбцы вы хотите видеть, а какие нет. Для вашего случая оставить только столбец CPU и имя (если вы хотите имя) Нажмите ESC, чтобы вернуться в главное верхнее меню и сохранить с помощью Capital W изменение. Теперь вам легче разбираться.

Теперь для общего использования ЦП обычно есть другие инструменты, такие как ps, iostat, выполняющие cat /proc/stat. Для каждого вам нужен другой синтаксический разбор, как тот, который используется для верха.

ПРИМЕЧАНИЕ. Следует отметить, что верхняя часть - это не самый эффективный способ увидеть использование ЦП или работать с ним при анализе значений для него. Для некоторых использование f2 в команде cut показывает значение, для других - f3

5
ответ дан 25 May 2018 в 17:56
  • 1
    top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f2|cut -d '%' -f1 > file1.csv это работает в настоящее время ...... не top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f3|cut -d '%' -f1 > file1.csv дает пустое место. – piyushj 29 September 2016 в 13:36
  • 2
    @piyushj Weird, для меня на 16.04 64 бит, подход f3 - это тот, который дает мне правильное значение, f2 дает пустую. Я загружу изображение. – Luis Alvarado♦ 29 September 2016 в 17:40
  • 3
    Для меня, на centos 6.8 и ubuntu 14.04.4, дающих результат для f2 ........ может быть его сборка и тип LINUX. – piyushj 30 September 2016 в 06:18
  • 4
    @piyushj Извините, но я не знаю, почему у вас это получилось. Я протестировал 13.04, 13.10, 14.04 (.0.1.2.3.4.5), 14.10, 15.04, 15.10, 16.04 и 16.10 beta, чтобы узнать, откуда это произошло. В ВСЕХ случаях, в каждом из них, F3 был правильным, а не F2, о котором вы говорите. Я не знаю о CentOS, но, по крайней мере, во всех версиях Ubuntu с 13.04 до 16.10 все они работают с F3, а не с F2. Я также тестировал, был ли это проблемой процессора, но это был тот же результат с AMD и Intel, от Intel Core 2 Duo до I7 6800K и от AMD Sempron & amp; Opteron - FX-8120. – Luis Alvarado♦ 30 September 2016 в 17:21

Для общего использования ЦП:

Если вы ТОЛЬКО хотите использовать CPU, вы можете попробовать это:

top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f3|cut -d '%' -f1 > file1.csv

Это даст вам только значение ЦП и обновить значение в файле. Если вы хотите ПРИЛОЖИТЬ данные в файл (так как я вижу, что вы назовёте его csv-файлом), то вместо one> используйте два, например >> file1.csv.

Для каждого потока и использования ЦП:

Сначала вам нужно устранить остальные столбцы, чтобы получить данные о процессоре.

  1. Запустите top и нажмите f.
  2. В этом меню вы выбираете, какие столбцы вы хотите видеть, а какие нет. Для вашего случая оставить только столбец CPU и имя (если вы хотите имя)
  3. Нажмите ESC, чтобы вернуться в главное верхнее меню и сохранить с помощью Capital W изменение. Теперь вам легче разбираться.

Теперь для общего использования ЦП обычно есть другие инструменты, такие как ps, iostat, выполняющие cat /proc/stat. Для каждого вам нужен другой синтаксический разбор, как тот, который используется для верха.

ПРИМЕЧАНИЕ. Следует отметить, что верхняя часть - это не самый эффективный способ увидеть использование ЦП или работать с ним при анализе значений для него. Для некоторых использование f2 в команде cut показывает значение, для других - f3

5
ответ дан 4 August 2018 в 18:33

Для общего использования ЦП:

Если вы ТОЛЬКО хотите использовать CPU, вы можете попробовать это:

top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f3|cut -d '%' -f1 > file1.csv

Это даст вам только значение ЦП и обновить значение в файле. Если вы хотите ПРИЛОЖИТЬ данные в файл (так как я вижу, что вы назовёте его csv-файлом), то вместо one> используйте два, например >> file1.csv.

Для каждого потока и использования ЦП:

Сначала вам нужно устранить остальные столбцы, чтобы получить данные о процессоре.

  1. Запустите top и нажмите f.
  2. В этом меню вы выбираете, какие столбцы вы хотите видеть, а какие нет. Для вашего случая оставить только столбец CPU и имя (если вы хотите имя)
  3. Нажмите ESC, чтобы вернуться в главное верхнее меню и сохранить с помощью Capital W изменение. Теперь вам легче разбираться.

Теперь для общего использования ЦП обычно есть другие инструменты, такие как ps, iostat, выполняющие cat /proc/stat. Для каждого вам нужен другой синтаксический разбор, как тот, который используется для верха.

ПРИМЕЧАНИЕ. Следует отметить, что верхняя часть - это не самый эффективный способ увидеть использование ЦП или работать с ним при анализе значений для него. Для некоторых использование f2 в команде cut показывает значение, для других - f3

5
ответ дан 10 August 2018 в 09:03

Я думаю, что использование top может быть не лучшим подходом. Я бы посмотрел на использование / proc / stat. Я нашел статью под названием «Расчет использования процессора из / proc / stat», которая может решить большую часть проблемы для вас.

2
ответ дан 25 May 2018 в 17:56

Это займет немного времени, потому что, кажется, есть буфер, который необходимо заполнить, прежде чем трубы начнут работать.

Сначала попробуйте с небольшим количеством итераций (обратите внимание: -n2 означает 2 итерации):

top -b -d1 -n2 | grep Cpu | cut -c 35-39

Что касается вашего комментария: если вы перенаправляете стандартный вывод в файл с помощью top -b -d 1 > file.csv, вы не можете передавать стандартный вывод в команду grep.

См. :

echo "Standard output" | grep "out"

vs.

echo "Standard output" >/tmp/foo | grep "out"

Во втором случае у вас нет выхода.

2
ответ дан 25 May 2018 в 17:56
top -b -n1 | grep Cpu | sed -r 's@.+:\s([0-9\.]+).+@\1@'

Как уже было сказано, опция -b вместе с -n 1 даст один текстовый вывод сверху, а не постоянное обновление по умолчанию. Затем вы можете подключиться к sed, чтобы найти значение, которое вы ищете.

0
ответ дан 25 May 2018 в 17:56

Я думаю, что использование top может быть не лучшим подходом. Я бы посмотрел на использование / proc / stat. Я нашел статью под названием « Расчет использования ЦП от / proc / stat », который может решить большую часть проблемы для вас.

2
ответ дан 25 July 2018 в 21:06

Это займет немного времени, потому что, кажется, есть буфер, который необходимо заполнить до начала работы труб.

Сначала попробуйте с небольшим количеством итераций (обратите внимание: -n2 означает 2 итерации):

top -b -d1 -n2 | grep Cpu | cut -c 35-39

Что касается вашего комментария: если вы перенаправляете стандартный вывод в файл с помощью top -b -d 1 > file.csv, вы не можете передавать стандартный вывод в команду grep.

См. :

echo "Standard output" | grep "out"

vs.

echo "Standard output" >/tmp/foo | grep "out"

Во втором случае у вас нет выхода.

2
ответ дан 6 August 2018 в 02:59
top -b -n1 | grep Cpu | sed -r 's@.+:\s([0-9\.]+).+@\1@'

Как уже было сказано, опция -b вместе с -n 1 даст один текстовый вывод сверху, а не постоянное обновление по умолчанию. Затем вы можете подключиться к sed, чтобы найти значение, которое вы ищете.

0
ответ дан 7 August 2018 в 20:40

Другие вопросы по тегам:

Похожие вопросы: