/proc/meminfo
файл содержит информацию, которая Вы после. Довольно легко проанализировать также.
Это получит Вас RAM и подкачка (в том порядке, единица является КБ во всех системах, которые я знаю):
awk '/^(MemTotal|SwapTotal)/{print $2}' /proc/meminfo
Для форматирования его Вы могли сделать что-то как:
printf "%s\t%d\t%d\n" $(hostname) \
$(awk '/^(MemTotal|SwapTotal)/{print $2}' /proc/meminfo)
Для объединения этого с ssh сделайте что-то как:
for host in your_list_of_servers ; do
printf "%s\t%d\t%d\n" $host \
$(ssh $host "awk '/^(MemTotal|SwapTotal)/{print \$2}' /proc/meminfo")
done
В то время как
не является командой, это ключевое слово оболочки. Ключевые слова распознаются до того, как произойдет переменная экспансия, поэтому после расширения уже слишком поздно.
У вас есть несколько вариантов:
Не используйте переменную вообще.
пока правда; сделать эхо злое сообщение; Спать 10; Готово &
Использование Eval
Для запуска оболочки через расширенное значение переменной
Eval "$ cmd" и
вызывают оболочку для запуска петли
Bash -C «$ CMD» и
Используйте функцию (это то, что обычно используется для хранения кода):
CMD () {В то время как true; сделать эхо злое сообщение; Спать 10; Готово; }
CMD &
Другой вариант (помимо всех хороших вариантов, перечисленных в ответе choroba) - запустить его в подоболочке, например:
(while true; do echo Evil Message; sleep 10; done;) &
Это вызовет bash
для запуска другого экземпляра самого себя с вашим кодом в фоновом режиме.