Мне это нужно каждые 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