我正在運行以下命令來清除快取:
$ 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 終端,我寫的這篇文章將逐步引導您。