如何自动“好”特定用户的工作?

如何自动“好”特定用户的工作?

如果我的服务器用户经常忘记在 Web 服务器上的工作中使用“nice”命令,是否可以更改设置,以便他们启动的所有内容的默认优先级略高于零?

答案1

可以在/etc/security/limits.conf文件中完成。

假设您的用户是组的成员users,您可以添加如下行:

@users soft nice 5

答案2

听起来nice,nice-ness 并不是您真正想要的工具 – cgroups 才是! (依赖用户nice自己是一个架构错误;)正如您在实践中注意到的!)

您可以为用户、服务以及 Linux 中的事物提供“切片”配额——非常类似于当 CPU 争用较高时,nice-ness 可用于降低某些进程的优先级,但范围更广——也适用于 I /O 带宽、RAM、进程数和其他一些东西。

这相当简单:假设您想限制 uid 1234 的用户(当前已登录,以便其切片存在)获得 nginx HTTP 服务 1/4 的 CPU 时间:

systemctl set-property user-1234.slice CPUShares=500 MemoryHigh=16G
systemctl set-property nginx.service CPUShares=2000 MemoryHigh=28G

(这些变化是永久性的)

如果你想限制所有登录用户总计, 使用user.slice

如果您想预先限制特定用户,请创建 /lib/systemd/system/user-1234.slice

[Unit]
Description=Goddammit stop hogging my server, Carl
Documentation=man:systemd.special(7)
Before=slices.target
CPUShares=500
MemoryHigh=2G

[Slice]
Slice=user-slice

[Install]
WantedBy=multi-user.target

答案3

如果我的服务器用户经常忘记在 Web 服务器上的工作中使用“nice”命令

听起来你做错了/这是 XY 问题。为什么技术上简单的“用户”可以以服务器角色对主机进行 shell 访问?为什么允许其他进程在此机器上运行?为什么这些进程需要的 CPU 时间比操作系统想要给它们的 CPU 时间多?

相关内容