в то время как: команда, не найденная

/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
6
01.04.2015, 23:40
2 ответа

В то время как не является командой, это ключевое слово оболочки. Ключевые слова распознаются до того, как произойдет переменная экспансия, поэтому после расширения уже слишком поздно.

У вас есть несколько вариантов:

  1. Не используйте переменную вообще.

     пока правда;  сделать эхо злое сообщение;  Спать 10;  Готово &
     
  2. Использование Eval Для запуска оболочки через расширенное значение переменной

     Eval "$ cmd" и
     
  3. вызывают оболочку для запуска петли

     Bash -C «$ CMD» и
     
  4. Используйте функцию (это то, что обычно используется для хранения кода):

     CMD () {В то время как true;  сделать эхо злое сообщение;  Спать 10;  Готово;  }
    CMD &
     
16
27.01.2020, 20:21

Другой вариант (помимо всех хороших вариантов, перечисленных в ответе choroba) - запустить его в подоболочке, например:

(while true; do echo Evil Message; sleep 10; done;) &

Это вызовет bash для запуска другого экземпляра самого себя с вашим кодом в фоновом режиме.

2
27.01.2020, 20:21

Теги

Похожие вопросы