我正在运行以下命令来清除缓存:
$ sync; sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
sh: 1: cannot create /proc/sys/vm/drop_caches: Operation not permitted
$ free
total used free shared buff/cache available
Mem: 7.9G 5.7G 2.0G 17M 230M 2.1G
Swap: 13G 445M 13G
因此它显然不起作用,因为缓存中有 230M。当我转到 /proc/sys/vm/ 时,没有名为“drop_caches”的文件。
到底是怎么回事?
我正在通过 Windows Linux 子系统使用 Ubuntu 16.04。
答案1
即使根由于/proc/sys/vm
其权限:
dr-xr-xr-x 1 root root 0 Jun 9 21:46 /proc/sys/vm
你可以看到,即使根没有写权限,这意味着即使根无法删除、重命名或创建此目录中的文件。
/proc/sys/vm
如果文件权限本身足够的话,现有文件可能可以编辑。
下的文件/proc
由内核提供。使用 WSL 时,您不会使用 Linux 内核,而是使用模拟 (lxss.sys、lxcore.sys)。如果下的文件/proc
不存在,则表示它不是由内核提供的,或者在您的情况下不是由模拟提供的。
答案2
[已编辑]
正如我之前承诺的那样,我找到了解决方案。
安装 WSL 2
你需要安装 WSL 2,因为 WSL 1 不支持 Systemd 之类的功能,因此无法在运行时删除缓冲区缓存。
安装 Ubuntu 预览版
即使安装了 WSL2,当前版本的 Ubuntu 也没有 Systemd 支持,因此必须安装 Ubuntu 预览版。
结果
● DESKTOP-E8H5RD4
State: running
Units: 308 loaded (incl. loaded aliases)
Jobs: 0 queued
Failed: 0 units
Since: Thu 2022-12-01 14:03:05 GMT; 1h 36min ago
systemd: 251.4-1ubuntu7
Tainted: cgroupsv1
CGroup: /
c_sharp_man@DESKTOP-E8H5RD4:/mnt/c/Windows/system32$ free
total used free shared buff/cache available
Mem: 7815484 484724 7191488 3352 139272 7128876
Swap: 2097152 268 2096884
c_sharp_man@DESKTOP-E8H5RD4:/mnt/c/Windows/system32$ sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
[sudo] password for c_sharp_man:
c_sharp_man@DESKTOP-E8H5RD4:/mnt/c/Windows/system32$ free
total used free shared buff/cache available
Mem: 7815484 486760 7192304 3352 136420 7128140
Swap: 2097152 268 2096884
c_sharp_man@DESKTOP-E8H5RD4:/mnt/c/Windows/system32$
额外的
如果你想使用自定义启动横幅来个性化你的 Windows 终端,我写的这篇文章将逐步指导你。