想问一个shell有关的问题

bear1986 2010-06-25 02:37:19
想实现如下功能

当某个文件夹的大小,达到系统磁盘总量的90%时,就删除这个文件夹里的所有文件

用shell实现,麻烦各位了哈~
...全文
191 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bear1986 2010-06-30
  • 打赏
  • 举报
回复
楼上公司禁用QQ呀。哈哈~好的,谢谢啦~
steptodream 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bear1986 的回复:]

点解还是不行。。。555,楼上,加我Q吧,想当面请教你593212124
[/Quote]
晚上加你 现在不能上QQ 你先试试楼上的
bear1986 2010-06-30
  • 打赏
  • 举报
回复
哦。。。忘记说了,ubuntu9.04 x64
zhjl1314 2010-06-29
  • 打赏
  • 举报
回复

不知道你啥操作系统,我写个aix下面的shell你试试吧
入参为你需要检查的目录

#!/bin/ksh
path_name=$1
path_size=`du -sk $path_name | awk '{ print $1 }'`
echo "path size is : $path_size [k]"
path_sizeM=`expr $path_size / 1024`
echo "path size is : $path_sizeM [m]"
path_sizeG=`expr $path_sizeM / 1024`
echo "path size is : $path_sizeG [g]"
if [ $path_sizeG -gt 225 ]
then
rm -rf $1/*
echo "$1 file and path delete !"
else
echo "$1 check ok!"
fi;
bear1986 2010-06-29
  • 打赏
  • 举报
回复
点解还是不行。。。555,楼上,加我Q吧,想当面请教你593212124
steptodream 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bear1986 的回复:]

改了自己的path,执行后提示
[: 6: missing ]不知道为何~~~
[/Quote]
不会吧 我这就好用啊 改改

#!/bin/sh
target_path=/your/path
dir_size=`du -skh $target_path | grep -o -E '([0-9]{1,})G' | cut -d'G' -f1`
if [ "$dir_size" != "" ];then
test $dir_size -gt 225 && rm -rf $target_path
fi
bear1986 2010-06-28
  • 打赏
  • 举报
回复
改了自己的path,执行后提示
[: 6: missing ]不知道为何~~~
steptodream 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bear1986 的回复:]

磁盘是250g的
[/Quote]
250G 就是超过225G就删除了?
试试我这个 把第一行/your/path改成实际path 千万小心哦
你可以先测试一下 先把rm -rf那一句换成一句普通的输出 比如echo "i will rm"
再改回去真正执行删除

#!/bin/sh
target_path=/your/path
dir_size=`du -skh $target_path | grep -o -E '([0-9]{1,})G' | cut -d'G' -f1`
if [ x$dir_size != x ] && [ $dir_size -gt 225 ];then
rm -rf $target_path
fi
bear1986 2010-06-28
  • 打赏
  • 举报
回复
磁盘是250g的
steptodream 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bear1986 的回复:]

貌似不行啊。楼上
[/Quote]
虽然用脚本能得到系统磁盘总量 但是我嫌麻烦
你告诉我一下你的系统的总空间是多大
bear1986 2010-06-28
  • 打赏
  • 举报
回复
貌似不行啊。楼上
yuchujian 2010-06-25
  • 打赏
  • 举报
回复
#!/bin/bash

testdir=DIR

if [ ! -d ${testdir} ]
then
echo "no the dir "
fi

sizedir=`du -sh ${testdir} | awk -F 'G' '{print $1}'`

if [ ${sizedir} > 60 ]
then
cd ${testdir}
rm -rf *
fi

exit 0

完了,把这个shell加到crontab中就可以啦
昵称很不好取 2010-06-25
  • 打赏
  • 举报
回复
获取文件夹大小好像可以用du,判断下 ,达到规定大小就删除呗

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧