首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cset作为非root设置用于运行进程的cpu关联。

cset作为非root设置用于运行进程的cpu关联。
EN

Server Fault用户
提问于 2012-06-19 23:03:49
回答 3查看 2.6K关注 0票数 1

我一直在使用cset来设置运行进程的cpu亲和力。我正在用set和proc手动重新创建内置的“屏蔽”函数,为我的应用程序的特定线程添加一些子集。我有一个bash脚本,它调用cset来创建集合,并将正确的线程移动到正确的集合。它在与sudo一起运行时起作用。

现在我想让另一个用户可以执行这个脚本,他没有sudo的能力。我相信这个用户足够负责cset,但不想打开根的广泛权力。

我认为CAP_SYS_NICE --这是sched_setaffinity所需要的,我只是假设cset必须使用--在脚本上就足够了,但这是行不通的。我尝试将CAP_SYS_NICE扩展到cset程序(它是cset库的瘦python包装器)。没有骰子。cap_to_text在我的cap_sys_nice脚本上的输出是"=cap_ipc_lock,cap_sys_nice,cap_sys_resource+eip“(由于其他原因,它有ipc_lock和sys_resource;我认为只有sys_nice是相关的)。

有什么想法吗?

EN

回答 3

Server Fault用户

回答已采纳

发布于 2012-06-20 03:05:29

相反,只需给予用户受限的sudo权限就可以只运行该脚本,例如:

代码语言:javascript
复制
bob ALL=(root) NOPASSWD: /usr/local/bin/cset.sh

如果希望用户使用其密码进行身份验证,请删除NOPASSWD:

票数 1
EN

Server Fault用户

发布于 2012-06-21 04:43:11

我一直认为cset是一个SuSE工具。我在EL5的RHEL上使用了它,但是在EL6中,C组是处理屏蔽的首选方法。

我可能会选择sudo路径,限制对将用户进程放入屏蔽程序所需的特定命令的访问。

票数 1
EN

Server Fault用户

发布于 2012-06-26 15:23:10

虽然cgroup似乎取代了cset/cpusets (正如ewwhite所说),但我还是继续使用旧方法,因为它更熟悉,而且仍然有效。

对于权限问题,首先通过使用cset在/cpusets中创建一棵树(i sudo chown -R root:myusergroup /cpusets/mytreesudo chmod -R g+rwX /cpusets/mytree )来解决我的特殊问题。之后,myusergroup中的用户可以通过echo $MYPID >> /cpusets/mytree/subtree/tasks在树中移动进程。不幸的是,cset似乎在没有对所有/cpusets的完全许可的情况下工作--我相信它每次运行命令时都会尝试重新读取整个/cpusets目录--所以我不得不求助于手动移动进程的方法。

我并不是说这是每个人的理想解决方案,但它最适合我的背景和情况。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/400349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档