LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 693|回复: 6

请问在bash下如何限制一个目录的存储空间?

[复制链接]
发表于 2004-7-18 09:33:16 | 显示全部楼层 |阅读模式
要打什么命令呢?除了创建一个镜像再mount到这个目录上的方法之外还有没有别的更好的方法,这个方法只是通过改变镜像大小来控制所mount目录的大小。而我想要的是用命令行就象对用户进行磁盘配额那样的方法,可以由管理员对任意目录做大小上的任意限制。

如我想将/backup1限制最多存储1G同时限制/backup2最多存储1500兆。请问如何作?
发表于 2004-7-18 10:56:28 | 显示全部楼层
对文件大小的限制可以通过ulimit -f blocks来实现,对目录,呵呵,不知道 :sorry
用脚本来控制不知道是否可行?
[php]
#!/bin/ksh
size=xxx #设定目录最大值
while true;do
        cur_size=$(du -sh test|grep -o '[0-9]\{1,\}')  #取当前目录test的大小
        [[ $size -le $cur_size ]] && chmod a-w ./test && echo "Diretory test: full" && break #如果当前目录的值大于设定的size,那么取消写入权限并提示退出
done
[/php]
放在后台来执行:
./script&
 楼主| 发表于 2004-7-18 12:01:09 | 显示全部楼层
你说的这个方法是肯定可以行得通的,但太浪费机器资源了,假如我同时限制了100目录,而且每个目录所限制的大小都不一样的话,那系统不是反复不间断的对这100个目录做du -sh,其实有时我们自己打这样的命令可能都要等几秒钟,所以这样的方法是临时的法子。

另外想请教你说utlime这个命令是对所有文件有效还是可以针对某几个文件有效。
发表于 2004-7-18 15:36:21 | 显示全部楼层
ulimit设定缺省的shell可以创建的最大文件大小, 针对运行环境, 并不是针对某个文件的.
发表于 2004-7-18 16:28:03 | 显示全部楼层
最初由 gao_linfeng 发表
你说的这个方法是肯定可以行得通的,但太浪费机器资源了,假如我同时限制了100目录,而且每个目录所限制的大小都不一样的话,那系统不是反复不间断的对这100个目录做du -sh,其实有时我们自己打这样的命令可能都要等几秒钟,所以这样的方法是临时的法子。

另外想请教你说utlime这个命令是对所有文件有效还是可以针对某几个文件有效。

想yongjian兄所言,!ulimit的介绍见:
http://www.linuxsir.cn/bbs/showthread.php?threadid=71992
发表于 2004-7-19 21:26:55 | 显示全部楼层
quota?
发表于 2004-7-19 22:10:33 | 显示全部楼层
没戏,bash又不是万能的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表