Мне это нужно каждые 2 минуты:свободная команда

Мой сервер - Debian (только текстовый режим)

1 ответ1

2

Как сохранить вывод free/vmstat каждые две минуты?

Через cron , перенаправление date и выхода.

Если вам нужен вывод free очень часто (в данном случае две минуты), это идеальная работа для cron:

Программная утилита Cron - это временный планировщик заданий в Unix-подобных компьютерных операционных системах. Люди, которые настраивают и поддерживают программные среды, используют cron для планирования заданий (команд или сценариев оболочки) для периодического запуска в фиксированные моменты времени, даты или интервалы.

Цитируется из первого абзаца статьи в Википедии о cron.

free , vmstat и date

Во-первых, выход вы хотите. Вы не говорите, как вы хотите отформатировать; так что если вам нужны только дата / время и неизмененный вывод, echo * будет работать нормально:

$ echo -e "`date`\n\n`free`\n\n`vmstat`"
Tue 28 Mar 00:32:07 BST 2017

             total       used       free     shared    buffers     cached
Mem:      16392592   16204636     187956     280584    9257448    1249596
-/+ buffers/cache:    5697592   10695000
Swap:       964604          0     964604

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 187956 9257448 1249596    0    0   201    24  111   84  5  1 94  0  0

Если это действительно то, что вы хотите. Обратите внимание, что free можно отформатировать в числах, удобных для чтения, передавая -h:

 $ free -h
             total       used       free     shared    buffers     cached
Mem:           15G        15G       227M       274M       8.8G       1.2G
-/+ buffers/cache:       5.5G        10G
Swap:         941M         0B       941M

* некоторые люди могут посоветовать вам вместо этого использовать printf , например printf "%s\n\n%s\n\n\%s\n\n" "$(date)" "$(vmstat)" "$(free)"). Обратите внимание, что мы должны были предоставить ключ -e для echo выше, чтобы включить обратную косую черту; хотя это не нужно в crontab позже.

Время от времени к файлу - через cron и перенаправление

Как и выше, cron выполнит команду в соответствии с указанным интервалом.

В вашем случае каждые две минуты вы можете захотеть что-то вроде:

$ crontab -l

# m     h       dom     mon     dow     command
  */2   *       *       *       *       echo -e "`date`\n\n`free`\n\n`vmstat`\n" >> /home/root/free_vmstat_output.txt

Обратите внимание, что crontab -l перечисляет содержимое crontab ; crontab -e открывает его в редакторе по умолчанию.

Здесь */2 в столбце m означает « каждые две минуты », * в других столбцах означает «каждый час / день месяца / месяц / день недели».

Команда >> after является перенаправителем вывода, в данном случае это означает (более или менее) «добавить этот вывод в следующий файл».

TL; DR

Если вы хотите сохранять выходные данные date , free и файл vmstat каждые две минуты, добавьте следующую строку в ваш crontab (через crontab -e):

  */2   *       *       *       *       echo "`date`\n\n`free`\n\n`vmstat`\n" >> /home/root/free_vmstat_output.txt

Дальнейшее чтение

Я не связан ни с одним из следующего, но они могут помочь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .