在Debian系统中,可以使用cgroups(control groups)来限制单个用户的资源使用。以下是具体步骤:
首先,确保你已经安装了cgroups相关的工具。你可以使用以下命令来安装:
sudo apt update
sudo apt install cgroup-tools
接下来,创建一个新的cgroups来限制用户的资源使用。例如,我们可以创建一个名为user_limits的cgroups:
sudo cgcreate -g memory:/user_limits
你可以为这个cgroups设置各种资源限制,例如内存、CPU等。以下是一些常见的限制示例:
echo "1G" | sudo tee /sys/fs/cgroup/memory/user_limits/memory.limit_in_bytes
echo "50000" | sudo tee /sys/fs/cgroup/cpu/user_limits/cpu.cfs_quota_us
echo "100000" | sudo tee /sys/fs/cgroup/cpu/user_limits/cpu.cfs_period_us
你需要将用户的进程添加到这个cgroups中。你可以使用cgclassify命令来实现这一点。首先,找到用户的PID:
ps -u username
然后,将用户的进程添加到cgroups:
sudo cgclassify -g memory:user_limits <PID>
为了使这些设置在系统重启后仍然有效,你可以将这些配置写入启动脚本中。例如,你可以编辑/etc/rc.local文件,在文件末尾添加以下内容:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# 创建cgroups
sudo cgcreate -g memory:/user_limits
# 设置内存限制
echo "1G" | sudo tee /sys/fs/cgroup/memory/user_limits/memory.limit_in_bytes
# 设置CPU限制
echo "50000" | sudo tee /sys/fs/cgroup/cpu/user_limits/cpu.cfs_quota_us
echo "100000" | sudo tee /sys/fs/cgroup/cpu/user_limits/cpu.cfs_period_us
# 将用户进程添加到cgroups
USER_PID=$(ps -u username | grep -v grep | awk '{print $1}')
sudo cgclassify -g memory:user_limits $USER_PID
exit 0
确保/etc/rc.local文件是可执行的:
sudo chmod +x /etc/rc.local
最后,你可以验证配置是否生效。你可以使用以下命令查看cgroups中的进程:
sudo cgget -g memory:user_limits
通过以上步骤,你就可以在Debian系统中限制单个用户的资源使用了。