AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 400349
Accepted
RaveTheTadpole
RaveTheTadpole
Asked: 2012-06-20 15:03:49 +0800 CST2012-06-20 15:03:49 +0800 CST 2012-06-20 15:03:49 +0800 CST

cset as non-root 为正在运行的进程设置 cpu 亲和力

  • 772

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

现在我想让另一个没有 sudo 权限的用户可以执行这个脚本。我足够信任这个用户,可以对 cset 负责,但不想开放 root 的广泛权力。

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

有任何想法吗?

linux affinity
  • 3 3 个回答
  • 2445 Views

3 个回答

  • Voted
  1. Best Answer
    mgorven
    2012-06-20T19:05:29+08:002012-06-20T19:05:29+08:00

    而是仅授予该用户受限的 sudo 权限以仅运行该脚本,例如:

    bob ALL=(root) NOPASSWD: /usr/local/bin/cset.sh
    

    NOPASSWD:如果您希望用户使用他们的密码进行身份验证,请删除。

    • 1
  2. ewwhite
    2012-06-21T20:43:11+08:002012-06-21T20:43:11+08:00

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

    我可能会走 sudo 路线,限制对将用户进程放入防护罩所需的特定命令的访问。

    • 1
  3. RaveTheTadpole
    2012-06-27T07:23:10+08:002012-06-27T07:23:10+08:00

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

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

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

    • 1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve