Мне это нужно каждые 2 минуты:
Мой сервер - Debian (только текстовый режим)
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 является перенаправителем вывода, в данном случае это означает (более или менее) «добавить этот вывод в следующий файл».
Если вы хотите сохранять выходные данные date , free и файл vmstat каждые две минуты, добавьте следующую строку в ваш crontab (через crontab -e):
*/2 * * * * echo "`date`\n\n`free`\n\n`vmstat`\n" >> /home/root/free_vmstat_output.txt
Я не связан ни с одним из следующего, но они могут помочь.
cron от unixgeeks.printf