用于编辑指定用户或工作组磁盘配额
edquota
命令用于编辑指定用户或工作组的磁盘配额。edquota
预设会使用vi来编辑使用者或群组的quota设置。
edquota [选项] [参数]
-u
:设置用户的quota,这是预设的参数;-g
:设置群组的quota;-p <源用户名称>
:将源用户的quota设置套用至其他用户或群组;-t
:设置宽限期限。用户
:指定要编辑磁盘配额限制的用户名或者工作组。配置系统的磁盘配额支持
首先,磁盘配额是区域性的,我们可以决定哪块分区进行磁盘配额,哪块分区不用(自然也就不用配置了)。一般而言,作为一台web虚拟主机服务器,/home
和/www
(或者类似的)是供用户存放资源的分区,所以可以对这两个分区进行磁盘配额。假定我们需要对/home
分区实现用户级的限制,而对/www
进行每个组的用户配额。
vi /etc/fstab
找到对应于/home
和/www
的行,例如:
/dev/sda5 /home ext2 defaults 1 2
/dev/sda7 /www ext2 defaults 1 2
在/home
里实现用户级的磁盘配额,所以对sda5
行的挂装选项域做如下修改:
/dev/sda5 /home ext2 defaults,usrquota 1 2
注意,是usrquota
哦。类似的,我们可以如下修改/www
行:
/dev/sda7 /www ext2 defaults,grpquota 1 2
如编辑根用户
改/etc/fstab
文件中
LABEL=/ / ext2 defaults,usrquota,grpquota 1 1
说明:/etc/fstab
文件的每一行由六个字段组成:
usrquota
关键字,只想实现基于组的磁盘配额,就加入grpqouta
关键字,如果两者都需要,就全写入,中间可以用逗号分隔。注意:请特别注意这里的拼写,是usrquota
和grpquota
,不要写成userquota
和groupquota
。
进入单用户模式,用quotacheck
生成.user
或.group
文件
quotacheck 你的目录
例如:quotacheck / ; quotacheck /home
如果单用户模式报错的话unmount你的设备/dev/hda*
再执行就ok了,重启系统,如果一切正常的话,quota将开始正常工作。
设置用户和组配额的分配量
对磁盘配额的限制一般是从一个用户占用磁盘大小和所有文件的数量两个方面来进行的。在具体操作之前,我们先了解一下磁盘配额的两个基本概念:软限制和硬限制。
软限制:一个用户在文件系统可拥有的最大磁盘空间和最多文件数量,在某个宽限期内可以暂时超过这个限制。
硬限制:一个用户可拥有的磁盘空间或文件的绝对数量,绝对不允许超过这个限制。
通过edquota
直接编辑数据文件:
使用编辑配额命令edquota
为用户配置定额,在重新启动系统之后,我们假设lanf
是需要定额的系统帐户,可以使用如下命令来为用户分配磁盘配额:
edquota -u lanf
这个命令将启动默认文本编辑器(如vi或其他由$EDITOR环境变量指定的编辑器),其内容如下所示:
Quota for user lanf:
/dev/sda5:blocks in use:0,limits(soft = 0,hard = 0)
inodes in use:0,limits(soft = 0,hard = 0)
这表示lanf
用户在/dev/sda5
分区(该分区已经在usrquota
的控制之下)中迄今使用了0个数据块(以K为单位),并且没有设限制(包括软限制soft
和硬限制hard
),同样,lanf
在这个分区也没有任何文件和目录,并且也没有任何软硬限制。如果我们想对用户进行磁盘容量的限制的话,只需要修改blocks
行的limits
部分就可以了,注意单位使用的是K。例如要为lanf
分配100M磁盘的软限制,400M硬限制,可以使用如下的设置:
Quota for user lanf:
/dev/sda5:blocks in use:0,limits(soft = 102400,hard = 409800)
inodes in use:0,limits(soft = 0,hard = 0)
同样的,要对文件目录的数量限制可以相应的修改inodes
行。我们也可以同时对这两项都作出限制。只需要如下的修改Quota for user lanf
:
/dev/sda5:blocks in use:0,limits(soft = 102400,hard = 409800)
inodes in use:0,limits(soft = 12800,hard = 51200)
这表示除了相应的容量的限制外,还对文件/目录的数量做了12800个的软限制和51200个的硬限制。在保存了新的配置后,该用户的磁盘使用就不能超过硬限制。如果用户试图超过这个限制,该操作将被取消,然后得到一个错误信息。但是,如果每个用户都要这么麻烦的设置的话,那这种重复的体力劳动实在有点令人不寒而栗,而且也太浪费时间了。幸好edquota
还有个-p
参数(prototype)可以对已有的用户设置进行拷贝。例如,我们想对Jack、Tom、Chen三个用户使用和lanf
一样的限额配置,可以使用如下的命令:
edquota -p lanf -u Jack Tom Chen
这样一来,这三个用户就被赋予了和lanf
一样的磁盘配额。
对组的配额,除了edquota
命令中对应-u
选项的改为-g
选项,例如下面对webterm1
组的操作:
edquota -g webterm1
实际上,以上的限制只是对用户设定的硬限制在起作用。如果需要使软限制也起作用的话,还需要对用户的软限制设定宽限期,缺省的软限制的宽限期是无穷,这可以使用edquota
命令的-t
选项来实现。运行下面的命令:
edquota -t
edquota
将打开缺省编辑器显示如下内容:
time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda5: block grace period: 0 days, file grace period: 0 days
可以使用天、小时、分、秒为单位来设定宽限期。例如,在下面这个例子中,磁盘空间限制的宽限期为两天,而文件数量限制的宽限期只有6个小时。
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda5: block grace period: 2 days, file grace period: 6 hours
通过setquota
工具加入:
比如加入用户bye2000
的磁盘配额,执行以下命令:
setquota -u / 2000 2500 100 110 bye2000
以下是setquota
命令用法的简单描述:
setquota [-u|-g] 装载点 软块数 硬块数 软文件数 硬文件数 用户名/组名
查看用户磁盘使用情况
要查明某一个用户使用了多少磁盘空间,例如lanf
,可以使用如下的命令:
quota -u lanf
显示:
Disk quotas for user lanf (uid 503):
Filesystem blocks quota limit grace file quota limit grace
/dev/sda5 3 102400 409800 1 12800 51200
同样,可以使用quota -g groupname
命令来参看某个组的磁盘使用情况。
注意:
如果该用户没有配置磁盘限额的话,输出显示Disk quotas for user hujm (uid 503): none
。
如果不带任何参数运行quota
的话,查看的是你自己的配额使用情况。
python
【从零学习python 】92.使用Python的requests库发送HTTP请求和处理响应
【从零学习python 】91. 使用装饰器和字典管理请求路径的简洁Web应用
【从零学习python 】93.使用字典管理请求路径
【从零学习python 】89. 使用WSGI搭建简单高效的Web服务器
【从零学习python 】88. WSGI接口详解:实现简单高效的Web开发
【从零学习python 】87. 手动搭建HTTP服务器的Python实现及多线程并发处理
【从零学习python 】86. 深入了解HTTP协议及其在浏览器和服务器通信中的作用
【从零学习python 】85.Python进程池的并行计算技术应用
【从零学习python 】84.深入理解线程和进程
【从零学习python 】83. Python多进程编程与进程池的使用
【从零学习python 】82. 基于多线程的聊天程序实现
【从零学习python 】81.Python多线程通信与队列的应用
【从零学习python 】80.线程访问全局变量与线程安全问题
【从零学习python 】79. 线程访问全局变量与线程安全问题
【从零学习python 】78. 文件下载案例
【从零学习python 】77. TCP服务端编程及注意事项
【从零学习python 】76.服务器与客户端:网络通信的关键组成部分
【从零学习python 】75. TCP协议:可靠的面向连接的传输层通信协议
【从零学习python 】74. UDP网络程序:端口问题与绑定信息详解
【从零学习python 】73. UDP网络程序-发送数据
【从零学习python 】72. 深入理解Socket通信及创建套接字的方法
【从零学习python 】71. 网络端口及其作用
【从零学习python 】70.网络通信方式及其应用:从直接通信到路由器连接多个网络
【从零学习python 】69. 网络通信及IP地址分类解析
【从零学习python 】68. Python正则表达式中的贪婪和非贪婪模式
【从零学习python 】67.Python中的re模块:正则替换与高级匹配技术
【从零学习python 】66.深入了解正则表达式:模式匹配与文本处理的利器
【从零学习python 】65. Python正则表达式修饰符及其应用详解
【从零学习python 】64. Python正则表达式中re.compile方法的使用详解
【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍
【从零学习python 】62. Python正则表达式:强大的字符串匹配工具
【从零学习python 】61.Python中的property属性详解和应用示例
【从零学习python 】60.探索生成器:迭代的灵活利器
【从零学习python 】59.迭代器:优化数据遍历的高效工具
【从零学习python 】58.Python中的自定义异常及引发异常的方法
【从零学习python 】57.Python中使用with关键字正确关闭资源
【从零学习python 】56. 异常处理在程序设计中的重要性与应用
【从零学习python 】55.Python中的序列化和反序列化,JSON与pickle模块的应用
【从零学习python 】54. 内存中写入数据
【从零学习python 】53. CSV文件和Python的CSV模块
【从零学习python 】52.文件的读写 - Python文件操作指南
【从零学习python 】51.文件的打开与关闭及其在Python中的应用
【从零学习python 】49. Python中对象相关的内置函数及其用法
【从零学习python 】48.Python中的继承与多继承详解
【从零学习python 】47. 面向对象编程中的继承概念及基本使用
【从零学习python 】46. Python中的__new__和__init__方法解析及单例设计模式
【从零学习python 】45.Python中的类方法和静态方法
【从零学习python 】44.面向对象编程中的私有属性和方法
【从零学习python 】43. Python面向对象编程中的实例属性和类属性
【从零学习python 】42.Python中的内置属性和方法
【从零学习python 】41.python魔法方法(二)
【从零学习python 】40.python魔法方法(一)
【从零学习python 】39.面向对象基本语法及应用示例
【从零学习python 】38.Python包的使用及导入方式
【从零学习python 】37.Python自定义模块的使用和注意事项
【从零学习python 】36.Python中使用pip进行第三方包管理的方法与技巧
【从零学习python 】35. Python常见系统模块及其用法
【从零学习python 】34.Python模块的导入和使用方法详解
【从零学习python 】33.装饰器的作用(二)
【从零学习python 】32.装饰器的作用(一)
【从零学习python 】31.深入理解Python中的高阶函数和闭包
【从零学习python 】30.深入理解递归函数和匿名函数
【从零学习python 】29. 「函数参数详解」——了解Python函数参数的不同用法
【从零学习python 】28. Python中的局部变量和全局变量
【从零学习python 】27. Python 函数的使用及嵌套调用
【从零学习python 】25.函数:提高代码编写效率的利器
【从零学习python 】24. Python中的字符串操作与遍历方法
【从零学习python 】23. Python中集合(set)的使用方法和常见操作
【从零学习python 】22. Python中的字典的增删改查及字典的变量
【从零学习python 】21.Python中的元组与字典
【从零学习python 】20. Python列表操作技巧及实例
【从零学习python 】19. 循环遍历列表和列表嵌套的应用
【从零学习python 】18. Python列表的基本操作详解(一)
【从零学习python 】17. Python字符串的format方法(二)
【从零学习python 】16. Python字符串的format方法(一)
【从零学习python 】15.深入了解字符串及字符集编码
【从零学习python 】14.Python字符串常见操作(二)
【从零学习python 】13.Python字符串常见操作(一)
【从零学习python 】12.Python字符串操作与应用
【从零学习python 】11.Python循环语句和控制流程
【从零学习python 】10.Python条件语句和if嵌套详解
【从零学习python 】09.Python 中的条件判断语句
【从零学习python 】08.Python了解位运算符, 运算符优先级
【从零学习python 】07.Python运算符详解:赋值、比较和逻辑运算符
【从零学习python 】06. Python中运用算数运算符进行计算和字符串拼接
【从零学习python 】05. Python中的输出和输入
【从零学习python 】04. Python编程基础:变量、数据类型与标识符
【从零学习python 】03. Python交互式编程及注释详解
【从零学习python 】02. 开发工具介绍
【从零学习python 】01. 安装配置python