Отключение файлов в / dev / shm не освобождает память?

Это:

$ rm +([0-9]).[0-9][0-9]

Удаляет все файлы с одной (или несколькими) цифрами перед точкой и ровно двумя десятичными знаками.

Это должно выполняться в bash, поскольку extglog установлен по умолчанию для интерактивных оболочек, но если вам нужно использовать его в сценарии, используйте это:

shopt -s extglog
rm +([0-9]).[0-9][0-9]
2
13.04.2017, 15:36
2 ответа

Для ясности я добавляю более или менее скриптовый тест того, о чем мы говорили в комментариях. Это ядро ​​4.7.2 , где проблема тоже не возникает:

$ cd /dev/shm
$ free
              total        used        free      shared  buff/cache   available
Mem:        1794788      673948      873668       19300      247172      963316
Swap:       2097148           0     2097148
$ for i in `seq 100000`; do touch node$i; done
$ ls -1|wc -l  # oops, there are extra three pulseaudio files here
 100003
$ free
              total        used        free      shared  buff/cache   available
Mem:        1794788      738240      811944       19300      244604      890184
Swap:       2097148           0     2097148

Хорошо, мы получили объем памяти. Но rm очищает его

$ rm node*
$ free
              total        used        free      shared  buff/cache   available
Mem:        1794788      671484      896524       19300      226780      965884
Swap:       2097148           0     2097148

Совпадение не идеальное, потому что я тем временем очистил некоторые кеши. Но количество свободной памяти и памяти в кеше одинаково в начале и в конце этого небольшого эксперимента.

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

2
27.01.2020, 21:59

Похоже, это просто ошибка в старом ядре, которое работает на этой конкретной машине. Я не могу воспроизвести его на новой машине RHEL 6 с самыми последними исправлениями ядра.

2
27.01.2020, 21:59

Теги

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