Linux常用命令学习笔记:quota

1. 命令概述

  • 命令名称quota(英文全拼:quota)
  • 核心功能显示用户或用户组的磁盘配额使用情况
  • 主要用途:查看磁盘配额限制和当前使用情况
  • 特点:显示软限制、硬限制、使用量、宽限时间等信息

2. 语法格式

quota [选项] [用户名或用户组名]

3. 常用选项

选项说明
-u显示用户配额(默认)
-g显示用户组配额
-v显示详细信息
-s以人类可读格式显示
-q只显示超过配额的摘要信息
-l只显示本地文件系统
-t显示宽限时间
-f指定文件系统
--help显示帮助信息
--version显示版本信息

4. 基本操作

(1) 显示用户配额

# 显示当前用户的配额
quota

# 显示指定用户的配额
quota username

# 显示当前用户的配额,以人类可读格式
quota -s

# 显示指定用户的配额,以人类可读格式
quota -s username

# 显示当前用户的配额,显示详细信息
quota -v

# 显示指定用户的配额,显示详细信息
quota -v username

(2) 显示用户组配额

# 显示当前用户所属用户组的配额
quota -g

# 显示指定用户组的配额
quota -g groupname

# 显示指定用户组的配额,以人类可读格式
quota -g -s groupname

# 显示指定用户组的配额,显示详细信息
quota -g -v groupname

# 显示所有用户组的配额
quota -g -a

(3) 显示宽限时间

# 显示用户宽限时间
quota -t

# 显示用户组宽限时间
quota -g -t

# 显示用户宽限时间,以人类可读格式
quota -t -s

# 显示用户组宽限时间,以人类可读格式
quota -g -t -s

(4) 显示超过配额的摘要信息

# 显示当前用户超过配额的摘要信息
quota -q

# 显示指定用户超过配额的摘要信息
quota -q username

# 显示当前用户组超过配额的摘要信息
quota -g -q

# 显示指定用户组超过配额的摘要信息
quota -g -q groupname

5. 常用实例详解

(1) 基本配额显示示例

# 显示当前用户的配额
quota
# 输出:
# Disk quotas for user user1 (uid 1001):
#   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
#   /dev/sda1       0   102400  204800              0    1000    2000

# 以人类可读格式显示
quota -s
# 输出:
# Disk quotas for user user1 (uid 1001):
#   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
#   /dev/sda1       0    100M    200M              0    1000    2000

# 显示详细信息
quota -v
# 输出:
# Disk quotas for user user1 (uid 1001):
#   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
#   /dev/sda1       0   102400  204800              0    1000    2000
#   /dev/sda2       0       0       0              0       0       0

# 显示指定用户的配额
quota user2
# 输出:
# Disk quotas for user user2 (uid 1002):
#   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
#   /dev/sda1       0   102400  204800              0    1000    2000

(2) 用户组配额显示示例

# 显示当前用户所属用户组的配额
quota -g
# 输出:
# Disk quotas for group developers (gid 1001):
#   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
#   /dev/sda1       0   512000 1048576              0    5000   10000

# 以人类可读格式显示
quota -g -s
# 输出:
# Disk quotas for group developers (gid 1001):
#   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
#   /dev/sda1       0    500M    1G              0    5000   10000

# 显示指定用户组的配额
quota -g testers
# 输出:
# Disk quotas for group testers (gid 1002):
#   Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
#   /dev/sda1       0   102400  204800              0    1000    2000

# 显示所有用户组的配额
quota -g -a
# 输出:显示所有用户组的配额信息

(3) 宽限时间显示示例

# 显示用户宽限时间
quota -t
# 输出:
# Time units may be: days, hours, minutes, or seconds
#   Filesystem             block grace period     inode grace period
#   /dev/sda1                     7days                  7days

# 以人类可读格式显示
quota -t -s
# 输出:
# Time units may be: days, hours, minutes, or seconds
#   Filesystem             block grace period     inode grace period
#   /dev/sda1                     7days                  7days

# 显示用户组宽限时间
quota -g -t
# 输出:
# Time units may be: days, hours, minutes, or seconds
#   Filesystem             block grace period     inode grace period
#   /dev/sda1                     7days                  7days

# 显示用户组宽限时间,以人类可读格式
quota -g -t -s
# 输出:
# Time units may be: days, hours, minutes, or seconds
#   Filesystem             block grace period     inode grace period
#   /dev/sda1                     7days                  7days

(4) 超过配额显示示例

# 显示当前用户超过配额的摘要信息
quota -q
# 输出:如果超过配额,显示警告信息

# 显示指定用户超过配额的摘要信息
quota -q user1
# 输出:如果超过配额,显示警告信息

# 显示当前用户组超过配额的摘要信息
quota -g -q
# 输出:如果超过配额,显示警告信息

# 显示指定用户组超过配额的摘要信息
quota -g -q developers
# 输出:如果超过配额,显示警告信息

6. 实际应用场景

场景一:用户磁盘配额监控

# 监控当前用户的磁盘使用情况
quota -s

# 监控指定用户的磁盘使用情况
quota -s username

# 监控所有用户的磁盘使用情况
repquota -a

# 监控用户超过配额的摘要信息
quota -q

# 监控用户宽限时间
quota -t

# 监控用户组宽限时间
quota -g -t

场景二:用户组磁盘配额监控

# 监控当前用户组的磁盘使用情况
quota -g -s

# 监控指定用户组的磁盘使用情况
quota -g -s groupname

# 监控所有用户组的磁盘使用情况
repquota -g

# 监控用户组超过配额的摘要信息
quota -g -q

# 监控用户组宽限时间
quota -g -t

场景三:磁盘配额告警

# 检查用户是否超过配额
if quota -q username 2>/dev/null | grep -q "over quota"; then
    echo "用户 $username 超过配额"
fi

# 检查用户组是否超过配额
if quota -g -q groupname 2>/dev/null | grep -q "over quota"; then
    echo "用户组 $groupname 超过配额"
fi

# 检查所有用户是否超过配额
for user in $(cut -d: -f1 /etc/passwd); do
    if quota -q "$user" 2>/dev/null | grep -q "over quota"; then
        echo "用户 $user 超过配额"
    fi
done

# 检查所有用户组是否超过配额
for group in $(cut -d: -f1 /etc/group); do
    if quota -g -q "$group" 2>/dev/null | grep -q "over quota"; then
        echo "用户组 $group 超过配额"
    fi
done

场景四:磁盘配额统计

# 统计用户磁盘使用情况
quota -s username | awk '/dev/ {print $2, $3, $4}'

# 统计用户组磁盘使用情况
quota -g -s groupname | awk '/dev/ {print $2, $3, $4}'

# 统计所有用户磁盘使用情况
repquota -a | awk '/dev/ {print $1, $2, $3, $4}'

# 统计所有用户组磁盘使用情况
repquota -g | awk '/dev/ {print $1, $2, $3, $4}'

# 统计用户宽限时间
quota -t | awk '/dev/ {print $2, $3}'

# 统计用户组宽限时间
quota -g -t | awk '/dev/ {print $2, $3}'

7. 与其他命令的区别

命令特点适用场景
quota显示用户或用户组配额使用情况查看配额状态
edquota编辑用户或用户组配额设置配额限制
repquota显示所有用户或用户组配额使用情况查看所有配额状态
quotacheck检查配额配置配额检查和维护
quotaon启用配额启用配额功能
quotaoff禁用配额禁用配额功能

8. 注意事项

  1. 权限问题:普通用户只能查看自己的配额,root用户可以查看所有用户的配额
  2. 配额未启用:如果配额未启用,会显示”Quota not enabled”错误
  3. 文件系统支持:配额功能需要在文件系统挂载时启用 usrquotagrpquota选项
  4. 宽限时间:超过软限制后,用户有宽限时间清理文件,超过宽限时间后无法创建新文件
  5. 硬限制:硬限制是绝对限制,超过后无法创建新文件

9. 常见问题解决

(1) 权限不足

# 错误:权限不足
quota otheruser  # 报错:Permission denied

# 正确:使用sudo
sudo quota otheruser

# 正确:查看自己的配额
quota

# 正确:查看自己所属用户组的配额
quota -g

# 正确:切换到root用户
su -
quota otheruser

(2) 配额未启用

# 错误:配额未启用
quota  # 报错:Quota not enabled

# 正确:启用配额
sudo quotaon -avug

# 正确:检查配额配置
sudo quotacheck -avug

# 正确:重新挂载文件系统
sudo mount -o remount,usrquota,grpquota /dev/sda1

# 正确:修改fstab文件
# 在fstab中添加usrquota,grpquota选项
sudo vim /etc/fstab

(3) 用户或用户组不存在

# 错误:用户不存在
quota nonexistentuser  # 报错:User does not exist

# 正确:检查用户是否存在
id username

# 正确:创建用户
sudo useradd username

# 错误:用户组不存在
quota -g nonexistentgroup  # 报错:Group does not exist

# 正确:检查用户组是否存在
getent group groupname

# 正确:创建用户组
sudo groupadd groupname

(4) 文件系统不支持配额

# 错误:文件系统不支持配额
quota  # 报错:Filesystem does not support quota

# 正确:检查文件系统类型
df -T

# 正确:重新挂载文件系统
sudo mount -o remount,usrquota,grpquota /dev/sda1

# 正确:修改fstab文件
# 在fstab中添加usrquota,grpquota选项
sudo vim /etc/fstab

# 正确:使用支持配额的文件系统
# 如ext4、xfs等支持配额的文件系统

核心要点总结

  • quota是显示用户或用户组磁盘配额使用情况的命令
  • 常用选项-u(显示用户配额)、-g(显示用户组配额)、-s(人类可读格式)、-v(显示详细信息)、-t(显示宽限时间)、-q(显示超过配额的摘要信息)
  • 实际应用:用户磁盘配额监控、用户组磁盘配额监控、磁盘配额告警、磁盘配额统计
  • 注意事项:需要文件系统支持配额功能,普通用户只能查看自己的配额

quota命令是Linux系统磁盘配额管理的基础工具,熟练掌握可以有效地监控用户和用户组的磁盘空间使用情况。


作 者:南烛
链 接:https://www.itnotes.top/archives/479
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇