免费注册 查看新帖 |

Chinaunix

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

[系统管理] shell目录管理 [复制链接]

论坛徽章:
1
申猴
日期:2013-10-18 10:42:24
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-10 15:06 |只看该作者 |倒序浏览
突然想到一个问题。

我的/data/tmp目录平时存很多杂的东西,
每个文件可能未来几天能用到,可能永远用不到了,
我在想,是不是可以写个脚本,放到cron里,
每个月扫一次,如果有文件存放时间大于30天将此文件删除。

琢磨半天,也就写了个cron,加上脚本第一行的#!/bin/bash。
各种纠结中。。。

请各位大神赐教。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2012-09-10 15:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2012-09-10 15:21 |只看该作者
pasttime=`date --date='1 month ago' +%Y%m%d`
stat /data/tmp/*|sed -n '/File/p;/Modify/p'|awk '{print $2}'|sed "s/'//g;s/\`//g" |awk '{if(NR%2 !=0){en=$0} else {sub(/-/,"");sub(/-/,"");print en,$0}}'|awk "{if(\$2 <= $pasttime) {print \$1}}" >/tmp/delfile
while read line
do
echo "start clean~~~~~~~~~~~~~~~~"
rm -f /data/tmp/$line
done </tmp/delfile

论坛徽章:
1
申猴
日期:2013-10-18 10:42:24
4 [报告]
发表于 2012-09-10 15:29 |只看该作者
回复 2# zooyo


    这个有趣唉。。
    find还有这功能。
    不过不太会用。。您能写给我看下么,就我这个问题。
    谢谢版主了。。。

论坛徽章:
1
申猴
日期:2013-10-18 10:42:24
5 [报告]
发表于 2012-09-10 15:33 |只看该作者
回复 3# cao_doctor


    Oh my god!完全看不懂。。
    不过还是谢谢你,先珍藏起来,慢慢研究。。

论坛徽章:
0
6 [报告]
发表于 2012-09-10 15:38 |只看该作者
回复 5# wangyishuai
我自己之前,有过类似的需求,就贴给你了 stat命令查看得到文件创建时间 最近修改时间,我是判断哪个最近修改时间是30天之前删除

   

论坛徽章:
1
申猴
日期:2013-10-18 10:42:24
7 [报告]
发表于 2012-09-10 15:43 |只看该作者
回复 6# cao_doctor


    学到了。。
虽然不懂你的awk,不过学到一条命令也值了。
再次感谢。

论坛徽章:
0
8 [报告]
发表于 2012-09-10 15:48 |只看该作者
回复 5# wangyishuai
[root@support-20 ~]#  stat test
  File: `test'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 3373430     Links: 9
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2012-09-10 15:20:13.000000000 +0800
Modify: 2012-09-10 15:04:28.000000000 +0800
Change: 2012-09-10 15:04:28.000000000 +0800


|sed -n '/File/p;/Modify/p'
过滤出名字和修改时间行
  File: `test'
Modify: 2012-09-10 15:04:28.000000000 +0800

awk '{print $2}'|sed "s/'//g;s/\`//g"
过滤第二列,去掉文件名的单引号
test
2012-09-10

awk '{if(NR%2 !=0){en=$0} else {sub(/-/,"");sub(/-/,"");print en,$0}}'
合并行
生成文件名 时间
test 20120910

awk "{if(\$2 <= $pasttime) {print \$1}}"
比较时间是否属于删除文件
其中$pasttime前面定义了


   

论坛徽章:
1
申猴
日期:2013-10-18 10:42:24
9 [报告]
发表于 2012-09-10 16:03 |只看该作者
回复 8# cao_doctor


    灰常感谢啊。
这么详细的解答,要不会都难 啊。。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
10 [报告]
发表于 2012-09-11 07:14 |只看该作者
回复 6# cao_doctor


    直接用find命令的-mtime来判断时间可以吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP