ulimit 命令主要用于限制用户进程的资源使用,例如打开文件描述符的数量、CPU 时间等。但是,ulimit 本身并不直接支持限制磁盘空间。要限制磁盘空间,您可以使用以下方法:
quota 命令:quota 是一个用于限制用户磁盘空间的工具。首先,您需要在系统上安装和配置 quota。以下是使用 quota 限制磁盘空间的基本步骤:
a. 安装 quota 软件包(以 Ubuntu/Debian 为例):
sudo apt-get install quota
b. 编辑 /etc/fstab 文件,为您要限制磁盘空间的文件系统添加 usrquota 和/或 grpquota 选项。例如:
/dev/sda1 / ext4 defaults,usrquota,grpquota 0 1
c. 重新挂载文件系统以应用更改:
sudo mount -o remount /
d. 启用 quota:
sudo quotacheck -cum /
e. 编辑 /etc/default/quota 文件,设置软限制(soft limit)和硬限制(hard limit)。例如:
QUOTA_ENABLE=1
QUOTA_SOFT=100M
QUOTA_HARD=120M
f. 重新启动 quota 服务:
sudo systemctl restart quota
g. 使用 edquota 命令为用户设置磁盘空间限制:
sudo edquota -u username
cgroups(控制组):cgroups 是 Linux 系统中用于限制、监控和分配进程组资源的一种机制。您可以使用 cgroups 限制进程组的磁盘 I/O 使用。以下是使用 cgroups 限制磁盘空间的基本步骤:
a. 安装 cgroup-tools 软件包(以 Ubuntu/Debian 为例):
sudo apt-get install cgroup-tools
b. 创建一个新的 cgroup:
sudo cgcreate -g blkio:/mygroup
c. 限制 cgroup 的磁盘 I/O 使用。编辑 /etc/cgconfig.conf 文件,添加以下内容:
group mygroup {
blkio {
blkio.throttle.read_bps_device = "8:0 10485760";
blkio.throttle.write_bps_device = "8:0 10485760";
}
}
这将限制 cgroup 中的进程每秒读取和写入 10MB 数据。
d. 将进程添加到 cgroup:
sudo cgclassify -g blkio:/mygroup <pid>
请注意,这些方法可能需要 root 权限。您可以根据自己的需求选择合适的方法来限制磁盘空间。