无需 root 权限即可清除 linux 缓存

无需 root 权限即可清除 linux 缓存

为了清除缓存,我通常调用

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

这需要 root 权限。为什么我需要偶尔这样做?因为它会对我的一些程序的运行时产生巨大的影响。我的问题是:如果没有超级用户权限,我该如何做到这一点,特别是这两种情况:

1)我/用户没有root权限。系统管理员可以做些什么来允许普通用户运行上面的命令吗?

2) 对删除缓存的调用来自 shell 脚本内,并且不能以超级用户权限运行整个脚本。例如,因为此脚本中有多个调用“mpirun”的实例,所以实际上不应该以 root 身份运行。尽管只有几行实际上需要它,但以 root 身份运行脚本中的所有内容对我来说似乎不是一个好的做法。

编辑:忘记提及:以上命令仅在以 root 身份登录时有效。否则命令将是echo 3 | sudo tee /proc/sys/vm/drop_caches

答案1

我会尝试一下这个答案。 OP 没有说正在使用什么操作系统,所以我会有点通用。
首先,创建一个文件,名为free_os_cache.sh

#!/bin/sh
# Description
# Forces the OS to clear OS caches

# Run a sync to reduce dirty caches
sync

# Tell the OS to not make warnings
echo 4 | tee /proc/sys/vm/drop_caches

# Tell the OS to clear caches
echo 3 | tee /proc/sys/vm/drop_caches

# Wait a tiny bit, just for safety (may not be necessary)
sleep 5

# Reset to 0
echo 0 | tee /proc/sys/vm/drop_caches

exit

然后,允许它被执行
chmod 755 free_os_cache.sh

接下来,将其添加到您的 sudoers 文件中:
ALL = /path_to_file/free_os_cache.sh

现在,您的用户应该能够运行此命令:
sudo /path_to_file/free_os_cache.sh

这应该足够接近,您可以根据自己的特定环境进行调整。
$0.02

相关内容