Расчет и измерение памяти в Linux :что плюс что равно чему?

Содержимое документа здесь -подвергнется расширению (переменных и подстановок команд ), если документ не указан в кавычках. В вашем случае документ здесь -не заключен в кавычки, поэтому $idрасширяется. Вероятно, переменная была не установлена ​​при перенаправлении документа, поэтому ее значение расширяется до пустой строки. Это создает впечатление, что переменная «исчезла».

Вместо:

cat >run_pos2bed3.sh <<'END_SCRIPT'
ls 2*/peaks.txt |
while read id; do
    echo "$id"
done
END_SCRIPT

или, для более безопасного скрипта (переменная idна самом деле не нужна ),

cat >run_pos2bed3.sh <<'END_SCRIPT'
printf '%s\n' 2*/peaks.txt
END_SCRIPT

Именно одинарные кавычки в 'END_SCRIPT'делают здесь -документ, цитируемый (это также может быть записано как "END_SCRIPT"или\END_SCRIPT).

Я также процитировал расширение $idв самом документе, как того требует хорошая практика сценариев оболочки (, см., например. Когда необходимо двойное -цитирование?).

0
09.02.2021, 08:22
1 ответ
  1. Why doesn't "used + available = total"?

Поскольку доступная память представляет собой подмножество используемой и свободной памяти, :это объем памяти, который можно использовать, не заставляя систему выполнять подкачку, т. е. свободная память плюс тот объем памяти, который в настоящее время используется для кэш, который можно удалить немедленно. См. Как я могу получить объем доступной памяти, переносимый между дистрибутивами? для деталей расчета.

  1. Why doesn't "free + buffer + cache = available"?

Поскольку некоторая часть памяти, используемой для буферов и кеша, недоступна :, она не может быть вытеснена немедленно, иначе ее использование поднимет систему выше водяного знака.

  1. Why doesn't "active + inactive + free = total"?

Потому что значения active и inactive отражают соответствующие LRU, а некоторые страницы там не отслеживаются — например, таблицы страниц(PageTables)— или не подлежат удалению(Unevictable).

Are there any other similar equations?

В выводе free«использовано» рассчитывается как «всего — свободно — кэшированных — буферов», если результат не отрицательный (, что может случиться , например. в LXC ), в этом случае «всего — бесплатно». Таким образом, во всех случаях «всего» будет либо «использовано + свободно + кешировано + буферы», либо «использовано + свободно».

0
18.03.2021, 22:31

Теги

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