7

Если я запускаю free -m , я получаю такой вывод:

Свободный -m вывод

Есть ли команда, которую я мог бы использовать, чтобы очистить использованную память? Я попробовал это:

echo 1 > /proc/sys/vm/drop_caches

Это попросит sudo . Но даже после sudo выдает ошибку команды.

Вот ссылка, где я узнал о drop_caches.

Я просто ищу способ очистки кеша.

3 ответа3

11

Попробуйте это как root (не sudo):

#sync && echo 3 > /proc/sys/vm/drop_caches
1

Проблема с:

sudo echo 1 > /proc/sys/vm/drop_caches

заключается в том, что перенаправление происходит в начальной оболочке - то есть под вашей собственной учетной записью - до того, как произойдет "sudo echo 1", а это не та часть, которая действительно нуждается в root-доступе. Вы должны получить открытие drop_caches через ">", чтобы быть внутри sudo. Один ленивый способ (ленивый, потому что он клонирует 3 обратно в стандартный вывод, который вам на самом деле не нужен):

echo 3 | sudo tee /proc/sys/vm/drop_caches

Варианты записи в drop_caches:

  1. Бесплатный кеш страниц
  2. Бесплатные зубные и иноды
  3. Бесплатный pagecache, dentries и inode.

И вы должны сначала синхронизировать, так что в целом:

sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches

или если вам не нравится ложная "3" на stdout:

sudo sh -c 'sync ; echo 3 >/prod/sys/vm/drop_caches'
0

Мы можем сделать это автоматически, используя crontab как root .

~$ sudo crontab -e

Вы увидите ваш / новый файл crontab следующим образом:

# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

И вы добавите этот в новых строках, чтобы очищать каждый час:

# Every hour flushes the memory cache on system
0 * * * * sync; echo 3 > /proc/sys/vm/drop_caches

Я вижу в своем выводе syslog журнала tailf.

~$ tailf /var/log/syslog | grep 'cron'

И я вижу вывод ниже:

May 31 14:07:16 debian crontab[17353]: (root) BEGIN EDIT (root)
May 31 14:07:20 debian crontab[17353]: (root) END EDIT (root)

...

May 31 15:00:02 debian CRON[22169]: (root) CMD (sync; echo 3 > /proc/sys/vm/drop_caches)
May 31 15:17:01 debian CRON[18828]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .