我关注https://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/然后我意识到我没有权限/proc/sys/vm/drop_caches
。我甚至使用了sudo su
,它仍然说Permissions denied
。为什么我无法访问此文件?我只想能够访问它,但即使拥有完整的 root 权限,我也无法访问它?
Ubuntu 20.04
答案1
这实际上不是一个答案,而只是我们在评论中要求的一个例子。请注意命令如何工作,以及 31 GB 的缓存被丢弃:
root@s19:/home/doug/tmp#
root@s19:/home/doug/tmp# free -m
total used free shared buff/cache available
Mem: 31940 386 258 3 31295 31086
Swap: 2047 0 2047
root@s19:/home/doug/tmp# sync
root@s19:/home/doug/tmp# echo 3 > /proc/sys/vm/drop_caches
root@s19:/home/doug/tmp# free -m
total used free shared buff/cache available
Mem: 31940 287 31510 3 142 31314
Swap: 2047 0 2047
root@s19:/home/doug/tmp#
该示例是在物理硬件上完成的,但也在完整的 (KVM/QEMU) 虚拟计算机上进行了尝试。我不知道它是否可以在 VPS 或其他计算机上运行。
答案2
“我甚至使用了 sudo su 但它仍然说权限被拒绝”的答案是,你可能并没有真正这样做sudo su
,因为除非你的权限被搞砸了,否则那样做是可以的。你链接的配方并不完全正确,因为它歪曲了 shell 中的操作顺序。sudo sync; echo 3 > /proc/sys/vm/drop_cache
将以 root 身份运行第一个命令,第二个命令将以普通用户(没有权限)身份运行。sudo sync
是一个完整的命令,shell 将执行它然后转到下一个命令。即使sudo echo 3 > /proc/sys/vm/drop_cache
不起作用,因为命令是sudo echo 3
,并且输出将像你在 shell 中一样重定向,因此再次会因权限问题而失败。正确的方法是,正如通过谷歌在其他地方可以找到的那样echo 3 | sudo tee /proc/sys/vm/drop_cache
。