Linux命令-quota(显示用户磁盘配额)
- 快速参考
- 命令语法
- 常用选项
- 配额概念
- 实战示例
- 1. 基础查询
- 2. 详细查询
- 3. repquota:查看所有配额
- 4. 配额配置流程
- 5. 监控与告警
- 6. edquota 交互式设置
- 发行版差异
- 配额相关命令全家桶
- 总结
快速参考
quota命令用于查看用户或组的磁盘配额使用情况。磁盘配额是 Linux 文件系统的一项功能,允许系统管理员限制每个用户或组在特定文件系统上可以使用的磁盘空间(块配额)和文件数量(inode 配额)。quota让你一眼就能看到谁快用完了自己的配额。
磁盘配额是"共享资源的边界守卫"——在多用户服务器(学校机房、开发服务器、HPC 集群)上,配额系统确保了"一个人的大文件不会撑爆所有人的工作空间"。
命令语法
quota [选项] [用户|组]常用选项
| 选项 | 功能 |
|---|---|
-u | 显示用户配额(默认) |
-g | 显示组配额 |
-v | 详细输出(包括没有配额的挂载点) |
-s | 人类可读格式(KB/MB/GB) |
-q | 简洁模式(只显示超配额的信息) |
-w | 同时显示用户和组配额 |
-f | 指定文件系统 |
--no-wrap | 不折行显示 |
配额概念
配额分为两类: 1. 块配额(Block Quota):限制磁盘空间使用量 - 软限制(soft limit):可临时超过(有宽限期) - 硬限制(hard limit):绝对不可超过 2. Inode 配额(Inode Quota):限制文件/目录数量 - 软限制和硬限制同上 宽限期(grace period):超过软限制后的宽限时间(默认 7 天)实战示例
1. 基础查询
# 查看当前用户的配额$quota-sDisk quotasforuser alice(uid1000): Filesystem spacequotalimit grace filesquotalimit grace /dev/sda1 512M 800M 1000M125015002000# 解读:# space 512M: 当前使用了 512MB 磁盘空间# quota 800M: 软限制 = 800MB(超过后开始宽限期倒计时)# limit 1000M: 硬限制 = 1GB(绝对不能超过)# files 1250: 当前 1250 个文件# quota 1500: 软限制 1500 个文件# limit 2000: 硬限制 2000 个文件# grace: 空白 = 未超过软限制,无宽限期计时# 查看指定用户的配额(需要 root 或配额管理员权限)$sudoquota-salice $sudoquota-sbob# 查看所有用户配额$sudorepquota-s/ *** Reportforuser quotas on device /dev/sda1 Block grace time: 7days;Inode grace time: 7days Space limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root --5.2G 0K 0K 125k00alice -- 512M 800M 1000M125015002000bob +- 950M 800M 1000M 2days210015002000none carol -- 120M 500M 600M30010001500# +- 表示 bob 超过了软限制(+),宽限期还有 2 天2. 详细查询
# 详细模式(包括没有配额的文件系统)$quota-v-sDisk quotasforuser alice(uid1000): Filesystem spacequotalimit grace filesquotalimit grace /dev/sda1 512M 800M 1000M125015002000/dev/sdb1 0K 0K 0K000# sdb1 没有配额限制(0 表示无限制)# 组配额查询$quota-g-s$quota-g-sdevelopers# 查看特定文件系统上的配额$quota-s-f/dev/sda1# 简洁模式(只在超配额时显示)$quota-q# 没有配额问题时无输出# 同时查用户和组$quota-w-s3. repquota:查看所有配额
# 查看所有用户配额(管理员工具)$sudorepquota-s/ $sudorepquota-a# 所有文件系统$sudorepquota-s-u/ $sudorepquota-s-g/# 查看专门配额项目(project quota)$sudorepquota-s-P/data# 筛选:只显示超过软限制的用户$sudorepquota-s/|awk'$5 == "+-" {print $1, $3, $4, $5}'# 生成配额报告$sudorepquota-s/|column-t>/tmp/quota_report.txt4. 配额配置流程
# 步骤1:启用文件系统的配额支持# 编辑 /etc/fstab$cat/etc/fstab|grepsda1UUID=abc123 / ext4 defaults,usrquota,grpquota01# ^^^^^^^^^^^^^^^^^ 添加此选项# 步骤2:重新挂载$sudomount-oremount /# 步骤3:创建配额数据库文件$sudoquotacheck-cug/ $ls-l/aquota.user /aquota.group# 步骤4:开启配额$sudoquotaon /# 步骤5:设置用户配额$sudosetquota-ualice800000100000015002000/dev/sda1# ^^^^^ ^^^^^^^ ^^^^ ^^^^# 软限制 硬限制 文件软限制 文件硬限制# 单位: KB(1M=1000K 在 setquota 中)# 步骤6:验证$sudoquota-salice# 步骤7:设置宽限期$sudosetquota-t864000604800/dev/sda1# 块宽限期 inode宽限期(秒)# 10天 7天5. 监控与告警
# 检查所有超过 80% 软限制的用户$sudorepquota-s/|awk'NR>5 && $3 ~ /[0-9]/ && $4 ~ /[0-9]/ && $4+0>0 && ($3+0)/($4+0) > 0.8 {print $1, $3, $4}'# 配额检查脚本$cat>/usr/local/bin/quota_check.sh<<'SCRIPT' #!/bin/bash THRESHOLD_PERCENT=85 MOUNT="/" echo "=== Quota Check $(date) ===" sudo repquota -s "$MOUNT" | awk 'NR>5 && $3 ~ /[0-9]/ && $4 ~ /[0-9]/ && $4+0>0 { usage = $3 limit = $4 gsub(/[A-Za-z]/, "", usage) # 移除 M/G/K 后缀 gsub(/[A-Za-z]/, "", limit) pct = (usage+0) * 100 / (limit+0) if (pct > '"$THRESHOLD_PERCENT"') { printf "WARNING: %s using %d%% of quota (%s/%s)\n", $1, pct, $3, $4 } }' SCRIPT# Cron 每日检查# 0 8 * * * /usr/local/bin/quota_check.sh | mail -s "Quota Report" admin@example.com# 配额快满时自动通知用户$sudorepquota-s/|awk'NR>5 && $3 ~ /[0-9]/ && $4 ~ /[0-9]/ { # 简化逻辑... }'6. edquota 交互式设置
# 对单个用户使用 edquota(交互式编辑)$sudoedquota-ualice# 会打开编辑器,显示类似内容:Disk quotasforuser alice(uid1000): Filesystem blocks soft hard inodes soft hard /dev/sda15242888000001000000125015002000# 复制配额模板$sudoedquota-palice bob carol# 将 alice 的配额设置复制给 bob 和 carol# 设置宽限期$sudoedquota-t# 编辑全局宽限期# 编辑组配额$sudoedquota-gdevelopers发行版差异
| 发行版 | quota 包名 | 默认安装 | 命令路径 |
|---|---|---|---|
| Debian/Ubuntu | quota | 否 | /usr/bin/quota |
| RHEL/CentOS/Fedora | quota | 否 | /usr/bin/quota |
| Arch Linux | quota-tools | 否 | /usr/bin/quota |
| Alpine Linux | quota-tools | 否 | /usr/bin/quota |
# 安装$sudoaptinstallquota# Debian/Ubuntu$sudodnfinstallquota# RHEL/Fedora$sudopacman-Squota-tools# Arch$sudoapkaddquota-tools# Alpine配额相关命令全家桶
| 命令 | 功能 |
|---|---|
quota | 查看配额使用情况 |
repquota | 报告所有用户/组的配额 |
setquota | 命令行设置配额 |
edquota | 交互式编辑配额 |
quotacheck | 检查并创建配额数据库 |
quotaon | 启用配额 |
quotaoff | 禁用配额 |
quotastats | 显示配额统计 |
warnquota | 配额警告通知 |
总结
磁盘配额是多用户系统的公平使用保障。核心流程:
- 在
/etc/fstab中添加usrquota,grpquota选项 quotacheck -cug /创建配额数据库quotaon /启用配额setquota或edquota设置限制quota -s或repquota定期检查
记住关键概念:
- 软限制(soft):可超过但有宽限期
- 硬限制(hard):无法超过的绝对上限
- 宽限期(grace):超过软限制后的缓冲时间
- 块配额限制空间,inode 配额限制文件数量