免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3382 | 回复: 9
打印 上一主题 下一主题

如何编写一个perl脚本来实现定时清理文件系统空间 [复制链接]

论坛徽章:
2
摩羯座
日期:2013-10-20 18:04:032015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-21 13:59 |只看该作者 |倒序浏览
hi,all
如题,现在我想当/opt 目录的空间达到80%的时候,就就去删除/opt/software下的文件每天18:00检查一次,谁能指导一下?
要是可以,请帮忙写一下脚本。
另外,我想学一下脚本编程,以后也可以通过脚本来实现某些操作,看什么书合适点,对于脚本编程,了解几乎
为零,求指导!!


谢谢!!

论坛徽章:
6
卯兔
日期:2013-11-26 14:52:02丑牛
日期:2014-02-19 18:01:25卯兔
日期:2014-05-20 20:34:06白羊座
日期:2014-05-23 13:39:232015亚冠之大阪钢巴
日期:2015-08-07 20:57:582015亚冠之大阪钢巴
日期:2015-09-02 14:09:09
2 [报告]
发表于 2013-06-21 14:33 |只看该作者

论坛徽章:
2
摩羯座
日期:2013-10-20 18:04:032015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2013-06-21 14:54 |只看该作者
回复 2# 只是一个红薯

如何@?!
我对这个不熟悉
   

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
4 [报告]
发表于 2013-06-21 15:20 |只看该作者
回复 1# yejunlon
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use File::Path 'rmtree';
  5. my $max_usage = "80";
  6. sub Free_Space {
  7.     my $max_usage = shift;
  8.     my ( $os, $df, $free_usage, $free ) = $^O;
  9.     if ( $os eq "linux" ) {
  10.         $df = `df -h /opt 2>/dev/null`;
  11.     }
  12.     else {
  13.         $df = `df -g /opt 2>/dev/null`;
  14.     }
  15.     while ( $df =~ /(\d+)%.*?(\/\S*)/g ) {
  16.          $1 > $max_usage ? $free_usage = 1:$free = 1;
  17.     }
  18.     return 1 if defined $free and !defined $free_usage;
  19. }
  20. unless (Free_Space("$max_usage") eq "1"){
  21.     rmtree ('/opt/software/',{keep_root => 1,verbose => 1 })
  22. }
复制代码
  1. 在crontab里添加
  2. 00 18 * * * /usr/bin/perl /script/cron_rm.pl
复制代码
具体情况 具体改改吧{:3_186:}

论坛徽章:
2
摩羯座
日期:2013-10-20 18:04:032015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2013-06-21 15:26 |只看该作者
回复 4# mcshell


    谢谢,mcshell 大大!!!
    我试试,顺便修改一下,我使用的是solaris10系统

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
6 [报告]
发表于 2013-06-21 15:33 |只看该作者
回复 5# yejunlon


    solaris10 没试用过。。
  aix  linux  都可以通过, 思路就是获取一下系统的磁盘空间使用情况,然后正则匹配下。。
具体看下solaris 磁盘空间命令是否通用{:3_190:}

论坛徽章:
2
摩羯座
日期:2013-10-20 18:04:032015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2013-06-21 15:37 |只看该作者
一样,都是df

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
8 [报告]
发表于 2013-06-21 16:40 |只看该作者
把linux改成Solaris试试。

论坛徽章:
0
9 [报告]
发表于 2013-06-22 10:56 |只看该作者
这位的脚本是很好的脚本,  不过我在这里忍不住要吐槽perl的 unless了。

真是让人每次看到都纠结半天, 大家都知道自然语言里“除非”这个词的意思是:
要做某件事,但如果条件A成立,则不做这件事, 仅此而已!
但是逻辑上说,可推出来的是: 如果条件A不成立,并不意味着要做某件事,同样可能不做的!  也就是从英语unless的语义意味着这个条件A根本不知道{}里面的事情该不该做!

所以unless 和 if then 相比就是个渣!


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
10 [报告]
发表于 2013-06-22 15:48 |只看该作者
很好的脚本,3Q~ {:3_188:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP