Debian 10:我想限制所有用户的内存、CPU 等,除了root
; 我找到了几篇关于这个的文章,但到目前为止,它们都围绕着 cgconfig 展开,这似乎不是现在完成的方式。我已经看到了一些使用切片的建议,因此对于 UID 1000,创建如下内容:
# cat /lib/systemd/system/user-1000.slice
[Unit]
Description=User and Session Slice
Documentation=man:systemd.special(7)
Before=slices.target
MemoryHigh=20M
[Slice]
Slice=user-slice
[Install]
WantedBy=multi-user.target
并使用systemctl enable user-1000.slice
. 这似乎成功了一半:
$ systemctl status user-1000.slice
Warning: The unit file, source configuration file or drop-ins of user-1000.slice changed on disk. Run 'systemctl daemon-reload' to reload units.
● user-1000.slice - User Slice of UID 1000
Loaded: loaded (/lib/systemd/system/user-1000.slice; enabled; vendor preset: enabled)
Drop-In: /usr/lib/systemd/system/user-.slice.d
└─10-defaults.conf
Active: active since Thu 2020-07-09 07:37:28 UTC; 1h 8min ago
Docs: man:systemd.special(7)
man:[email protected](5)
Tasks: 7 (limit: 5237)
Memory: 5.4M
CGroup: /user.slice/user-1000.slice
├─session-15.scope
│ ├─1089 sshd: jan [priv]
│ ├─1107 sshd: jan@pts/1
│ ├─1108 -bash
│ ├─1113 systemctl status user-1000.slice
│ └─1114 pager
└─[email protected]
└─init.scope
├─1092 /lib/systemd/systemd --user
└─1093 (sd-pam)
但是,MemoryHigh
未设置:
$ systemctl show user-1000.slice
Slice=user.slice
ControlGroup=/user.slice/user-1000.slice
...
MemoryHigh=infinity
...
我似乎很接近,但一定少了点什么——那是什么?
您错过了打印在屏幕上的警告:
当您更改 systemd 单位时,您必须
systemctl daemon-reload
让 systemd 重新读取它们。此外,受影响的单位需要重新启动。也就是说,如果您希望更改适用于所有用户,您可能应该改写为覆盖
user.slice
。当然,您永远不应该编辑系统提供的文件,而是通过drop-in files使用覆盖。