В настоящее время я использую
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) динамически. Спасибо!
Для общего использования ЦП:
Если вы ТОЛЬКО хотите использовать 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
Для общего использования ЦП:
Если вы ТОЛЬКО хотите использовать CPU, вы можете попробовать это:
top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f3|cut -d '%' -f1 > file1.csv
Это даст вам только значение ЦП и обновить значение в файле. Если вы хотите ПРИЛОЖИТЬ данные в файл (так как я вижу, что вы назовёте его csv-файлом), то вместо one> используйте два, например >> file1.csv
.
Для каждого потока и использования ЦП:
Сначала вам нужно устранить остальные столбцы, чтобы получить данные о процессоре.
top
и нажмите f. Теперь для общего использования ЦП обычно есть другие инструменты, такие как ps
, iostat
, выполняющие cat /proc/stat
. Для каждого вам нужен другой синтаксический разбор, как тот, который используется для верха.
ПРИМЕЧАНИЕ. Следует отметить, что верхняя часть - это не самый эффективный способ увидеть использование ЦП или работать с ним при анализе значений для него. Для некоторых использование f2 в команде cut показывает значение, для других - f3
Для общего использования ЦП:
Если вы ТОЛЬКО хотите использовать CPU, вы можете попробовать это:
top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f3|cut -d '%' -f1 > file1.csv
Это даст вам только значение ЦП и обновить значение в файле. Если вы хотите ПРИЛОЖИТЬ данные в файл (так как я вижу, что вы назовёте его csv-файлом), то вместо one> используйте два, например >> file1.csv
.
Для каждого потока и использования ЦП:
Сначала вам нужно устранить остальные столбцы, чтобы получить данные о процессоре.
top
и нажмите f. Теперь для общего использования ЦП обычно есть другие инструменты, такие как ps
, iostat
, выполняющие cat /proc/stat
. Для каждого вам нужен другой синтаксический разбор, как тот, который используется для верха.
ПРИМЕЧАНИЕ. Следует отметить, что верхняя часть - это не самый эффективный способ увидеть использование ЦП или работать с ним при анализе значений для него. Для некоторых использование f2 в команде cut показывает значение, для других - f3
Я думаю, что использование top может быть не лучшим подходом. Я бы посмотрел на использование / proc / stat. Я нашел статью под названием «Расчет использования процессора из / proc / stat», которая может решить большую часть проблемы для вас.
Это займет немного времени, потому что, кажется, есть буфер, который необходимо заполнить, прежде чем трубы начнут работать.
Сначала попробуйте с небольшим количеством итераций (обратите внимание: -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"
Во втором случае у вас нет выхода.
top -b -n1 | grep Cpu | sed -r 's@.+:\s([0-9\.]+).+@\1@'
Как уже было сказано, опция -b вместе с -n 1 даст один текстовый вывод сверху, а не постоянное обновление по умолчанию. Затем вы можете подключиться к sed, чтобы найти значение, которое вы ищете.
Я думаю, что использование top
может быть не лучшим подходом. Я бы посмотрел на использование / proc / stat. Я нашел статью под названием « Расчет использования ЦП от / proc / stat », который может решить большую часть проблемы для вас.
Это займет немного времени, потому что, кажется, есть буфер, который необходимо заполнить до начала работы труб.
Сначала попробуйте с небольшим количеством итераций (обратите внимание: -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"
Во втором случае у вас нет выхода.
top -b -n1 | grep Cpu | sed -r 's@.+:\s([0-9\.]+).+@\1@'
Как уже было сказано, опция -b вместе с -n 1 даст один текстовый вывод сверху, а не постоянное обновление по умолчанию. Затем вы можете подключиться к sed, чтобы найти значение, которое вы ищете.