如何清除 Debian 中的缓存内存?

如何清除 Debian 中的缓存内存?

如果我运行free -m,我会得到这个输出:

自由-m输出

是否有命令可用于清除已使用的内存?我尝试过以下方法:

echo 1 > /proc/sys/vm/drop_caches

它会要求sudo。但即使这样sudo,它仍然会给出错误的命令错误。

这是我了解到的链接drop_caches

我只是在寻找清除缓存的方法。

答案1

尝试以下操作root(不是 sudo):

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

答案2

问题在于:

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

重定向发生在初始 shell 中 - 即在您自己的帐户下 - 在“sudo echo 1”发生之前,这不是真正需要 root 访问权限的部分。您需要通过“>”打开 drop_caches 以位于 sudo 内部。一种偷懒的方法(偷懒是因为它将 3 克隆回 stdout,而您实际上并不需要)是:

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

写入 drop_caches 的选项有:

  1. 释放页面缓存
  2. 空闲的 dentry 和 inode
  3. 释放页面缓存、目录项和 inode。

你呢应该首先同步,所以总的来说:

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

或者如果你不喜欢标准输出上虚假的“3”:

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

答案3

crontab我们可以使用as 来自动完成它root

~$ sudo crontab -e

您将会看到如下的 your/new 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

我在我的syslogtailf 输出中看到了。

~$ 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)

相关内容