Intereting Posts
Фиксирование сломанной пакетной системы (apt-get) «Tar –exclude-backups» не исключает файлы с тильдой в конце Как вызвать ошибку с помощью команды Trap Каков канонический способ найти фактическую максимальную длину списка аргументов? Обновлено с CentOS 6.4 -> 6.5, и теперь разрешения не работают должным образом? Как узнать команду, выполняемую процессом? Firefox пишет все слова с версии 61 Скрипт для получения файла из SFTP и запуска его Как использовать раскладку клавиатуры Dvorak в командной строке GRUB2 LUKS? Как закрыть терминал, не убивая его детей (без запуска `screen`)? Alsa / Pulse отключает звук через некоторое время с сетевой раковиной на raspbian Который не ищет полный $ PATH Переход на несколько жестких дисков с двойной загрузкой LVM-устройства, не отображаемые в initrd, но работающие с загрузкой Найти все измененные файлы svn и скопировать файлы, измененные в одной структуре папок

Получайте отдельную информацию о памяти из free -m comand

В качестве вывода команды free -m я получил следующее.

  total used free shared buffers cached Mem: 2496 2260 236 0 5 438 -/+ buffers/cache: 1816 680 Swap: 1949 68 1881 

Я хочу использовать только память как 2260. Я попробовал следующую команду.

 free -m | grep Mem | cut -f1 -d " " 

Помогите мне улучшить свою команду.

Как я могу получить его в процентах, как 35%?

    Что касается добавленного вопроса о отображении в процентах (на основе ответа Джейсонвреяна):

     awk '/^Mem/ {printf("%u%%", 100*$3/$2);}' <(free -m) 

    получить процент путем погружения 3-го поля на 2-й и распечатать как целое число (без округления!).

    EDIT : добавлена ​​двойная '%' в printf (первая выходит из буквенного символа, предназначенного для печати).

    Вы можете использовать awk без необходимости отдельной grep трубки для этого:

     awk '/^Mem/ {print $3}' <(free -m) 

    Если записи / строки фильтруются для тех, которые начинаются с Mem а третье поле / столбец ( $3 ) печатается для отфильтрованной записи.

    Или с sed:

     free -m | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p' 

    Другое решение:

     free -m | grep ^Mem | tr -s ' ' | cut -d ' ' -f 3 

    К этому сообщению пришли кредиты на второе решение.

    только с bash free и grep

     read junk total used free shared buffers cached junk < <(free -m | grep ^Mem) echo $used