以非 root 用户身份以编程方式删除 Linux 缓存

2024-01-05

出于测试目的,我可以通过写入 Linux 中 procfs 下的 drop_caches 文件来删除缓存内存。我只能以 root 身份执行此操作。这是在嵌入式 Linux 上,所以没有 sudo。

sync; echo 3 > /proc/sys/vm/drop_caches

我可以通过在帖子中执行一些操作,以 C++ 编程方式写入文件 -->如何在 Linux 系统上用 C++ 以编程方式清除文件系统内存缓存? https://stackoverflow.com/questions/6818606/how-to-programmatically-clear-the-filesystem-memory-cache-in-c-on-a-linux-syst/6818653#6818653

sync();
std::ofstream ofs("/proc/sys/vm/drop_caches");
ofs << "3" << std::endl;

挑战在于想要在以非 root 用户身份运行应用程序时执行此操作。重新启动后,权限如下所示:

# cd /proc/sys/vm/
# ls -lrt drop_caches 
-rw-r--r--    1 root     root             0 Feb 13 19:50 drop_caches

而且你似乎无法更改这些权限 - 即使作为 root:

# chmod 777 drop_caches 
chmod: drop_caches: Operation not permitted
# chown user:user drop_caches 
chown: drop_caches: Operation not permitted

我怎样才能在 Linux 上完成这个任务?是否可以更改 procfs 文件的权限?如有必要,我可以完全定制我的内核。谢谢 -


您可以创建一个辅助可执行文件(要非常小心,这很危险),任何用户都可以使用 root 权限运行它。

这就是所谓的setuid http://en.wikipedia.org/wiki/Setuid.

出于安全原因,您不能setuid一个 shell 脚本。

从 wiki 中提取如何使用它:

setuid 和 setgid 位通常使用 chmod 命令设置 将高位八进制数字设置为 4(对于 setuid)或 2(对于 设置gid)。 “chmod 6711 file”将设置 setuid 和 setgid 位 (2+4=6)

Update

正如 @rici 指出的,您仍然需要具有执行权限才能执行此过程,因此您可以从others并仅将其保持打开状态group。因此,只有该组的成员才能执行它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以非 root 用户身份以编程方式删除 Linux 缓存 的相关文章

  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • 如何删除android微调器中的默认值?

    我正在使用 JSON 从数据库中获取值并将它们插入微调器中 该进程正在成功运行 但是当我单击微调器时 我收到了两次微调器提示 如何从微调器中删除第一个默认值 This is snapshot hope you understand my p
  • 如何在 Spring 配置文件中混合使用 CGLIB 和 JDK 代理?

    该线程与我遇到的一个问题有关这里关于访问建议类的受保护方法的需求 https stackoverflow com q 10110253 827480 我正在使用 Spring 3 0 6 并创建了一个 Spring 分析方面 我将其应用于使
  • 从 C++ 调用 dll 函数

    我在 dll 中有一个函数 我想从我的 C 应用程序调用它 该 dll 也是用 C 编写的 并且有一个 def 文件 该文件显示了 dll 中存在的函数 我使用的是 Visual Studio 2010 通过在链接器 附加库目录 中添加 D
  • 地图的联合迭代器?

    Preface 关联 C 容器 例如std map有点像只有一个键列的微型数据库 升压的bimap将其提升为一个两列表 在两列中都进行查找 但这就是类比 没有 polymap 来概括这个想法 无论如何 我想继续将地图视为数据库 现在我想知道
  • 普通 es6 类和扩展 React.Component 有什么区别

    我在用着反应全栈 https github com kriasoft react starter kit作为开始我的项目的脚手架 我发现它的示例代码与官方的 React 文档有很大不同 示例代码是这样的 withStyles styles
  • 当我有 UTC 偏移时如何创建 tzinfo?

    我有一个时区与 UTC 的偏移量 以秒为单位 19800 并且也有字符串格式 0530 我如何使用它们来创建一个tzinfo实例 我调查了pytz 但在那里我只能找到以时区名称作为输入的 API 对于 Python 3 2 或更高版本 您可
  • 如何使用 powershell 脚本替换文本文件中的值

    我的文件包含以下数据 无标题 DEPOSIT ADD 123456789 VALUE VARIABLE NNNN VALUEVARIABLE DEPOSIT ADD 234567890 VALUE P75 NNNN VALUEVARIABL
  • 关闭汞分支机构

    使用时hg branch FeatureBranchName并将其发布到开发人员之间共享的中央存储库 有没有办法最终关闭FeatureBranchName它的开发何时正式与默认分支合并 如果FeatureBranchName执行时不可见hg
  • 使用名称jquery通过索引获取id值

    html
  • TFS 回滚与“获取此版本”

    回滚和 获取此版本 有什么区别 它们都让我返回到特定版本 并从那里进行更改和签入 两者兼备有什么额外好处 Get specific version Get this version 仅影响您的本地工作区 它将所有本地更改恢复为旧版本 当您尝
  • 在我的 rspec 中找不到访问方法

    我的 java web 应用程序运行在 tomcat 上http localhost 8080 com http localhost 8080 编写我的第一个规范 home spec require spec helper describe
  • Paypal使用POST方式返回

    我正在尝试使用沙盒帐户测试 Paypal 第三方购物车按钮 该按钮如下所示
  • tr1::mem_fn 和具有默认参数的成员

    我的类有一个带有默认参数的成员函数 struct Class void member int n 0 通过 std tr1 mem fn 我可以调用它 Class object std tr1 mem fn Class member obj
  • 如何在具有 URL 外观的 TextView 中呈现文本

    请问如何渲染文本TextView具有类似于 URL 的外观 带下划线的蓝色文本 它可以与常规文本混合 显示为纯文本 吗 当我点击它时 它就会启动WebView加载该网址 Check autoLink http developer andro
  • dyld:未加载库:@rpath/libswiftCore.dylib。问题仍然存在

    我知道这个问题已经被回答过好几次了 但是当我为 IOS 8 1 编写 Swift 应用程序时 我一直无法找到此错误的正确解决方案 dyld 未加载库 rpath libswiftCore dylib 引用自 private var mobi
  • 在SAS中运行程序的热键?

    我知道在 R 中我可以使用 control r 来运行我的程序代码 我想知道 SAS 中是否有等效的热键 如果没有 有没有办法将其 编程 到 SAS 中 运行 提交程序 的默认热键是 F8 键 如果您使用的是 Base SAS 不是 EG
  • Maven exec:java run可执行插件依赖jar导致NPE

    我正在制作一个使用 sparql 端点服务的 Maven 应用程序 我想要一个 Maven 目标来下载 sparql 端点并启动服务 但似乎 Maven 在配置类路径方面存在一些问题 我正在使用 blazegraph 及其工件https m
  • java.lang.ArrayIndexOutOfBoundsException:RSA 块的数据过多

    我正在使用 RSA 加密文本和解密文本 公钥和私钥是使用openssl工具生成的 解密数据时遇到 java lang ArrayIndexOutOfBoundsException too much data for RSA block 异常
  • IIS 将 MVC 中的静态文件理解为动态内容

    通过使用 httpCompression 我意识到 IIS 将 MVC 中的静态文件理解为动态内容 因此即使您勾选了 启用静态内容压缩 但不要勾选 启用动态内容压缩 IIS 将返回 css and js未压缩的文件 GET MVCX Con
  • 以非 root 用户身份以编程方式删除 Linux 缓存

    出于测试目的 我可以通过写入 Linux 中 procfs 下的 drop caches 文件来删除缓存内存 我只能以 root 身份执行此操作 这是在嵌入式 Linux 上 所以没有 sudo sync echo 3 gt proc sy