温馨提示×

如何在Debian中限制单个用户的资源使用

小樊
51
2025-09-20 20:04:35
栏目: 智能运维

在Debian系统中,可以使用cgroups(control groups)来限制单个用户的资源使用。以下是具体步骤:

1. 安装cgroups工具

首先,确保你已经安装了cgroups相关的工具。你可以使用以下命令来安装:

sudo apt update
sudo apt install cgroup-tools

2. 创建cgroups

接下来,创建一个新的cgroups来限制用户的资源使用。例如,我们可以创建一个名为user_limits的cgroups:

sudo cgcreate -g memory:/user_limits

3. 设置资源限制

你可以为这个cgroups设置各种资源限制,例如内存、CPU等。以下是一些常见的限制示例:

限制内存使用

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

4. 将用户进程添加到cgroups

你需要将用户的进程添加到这个cgroups中。你可以使用cgclassify命令来实现这一点。首先,找到用户的PID:

ps -u username

然后,将用户的进程添加到cgroups:

sudo cgclassify -g memory:user_limits <PID>

5. 持久化配置

为了使这些设置在系统重启后仍然有效,你可以将这些配置写入启动脚本中。例如,你可以编辑/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

6. 验证配置

最后,你可以验证配置是否生效。你可以使用以下命令查看cgroups中的进程:

sudo cgget -g memory:user_limits

通过以上步骤,你就可以在Debian系统中限制单个用户的资源使用了。

0