如果我运行free -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 的选项有:
- 释放页面缓存
- 空闲的 dentry 和 inode
- 释放页面缓存、目录项和 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
我在我的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)