linux删除180天前日志的shell

hbylen 2012-08-02 11:11:35
有一个软件生成的日志文件是这样的格式:
/log/2012/01/02/log
/log/2012/01/03/log
/log/2012/01/04/log
说明:日志的文件夹是以时间的年、月、日命名的,部分日志可能会新导入。

日志不能自动删除,磁盘空间小,只能使用脚本做旧日志删除,比如每天0:00删除180天前所有的日志,删除的时候只能按文件夹名字来删除,不能按创建时间。
想写一个脚本一直运行,限于本人水平有限,有会的朋友帮帮忙,感激不尽。
...全文
709 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nextel 2012-08-06
  • 打赏
  • 举报
回复
find . -mtime +180 | xargs rm
hbylen 2012-08-05
  • 打赏
  • 举报
回复
有道理,但是如何才能删掉以前所有的文件呢[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:

你用date +%Y%m%d --date '180 days ago'可以得到180天前的日期,%Y可以单独得到年,%m得到月,%d得到日,那你就可以通过一层一层比较得到180天前的了;而每天0点删除则可以通过crontab实现
这个略微显得麻烦。
[/Quote]
Linux-Torvalds 2012-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你用date +%Y%m%d --date '180 days ago'可以得到180天前的日期,%Y可以单独得到年,%m得到月,%d得到日,那你就可以通过一层一层比较得到180天前的了;而每天0点删除则可以通过crontab实现
[/Quote]这个略微显得麻烦。
__Cheny 2012-08-03
  • 打赏
  • 举报
回复
rm -rf 命令慎用 我上面的脚本最后一行 rm -rf 引用的变量名值 DIR 后面是/* 中间可没有空格 你千万别加了个空格 会万劫不复的 慎用!
__Cheny 2012-08-03
  • 打赏
  • 举报
回复
删除180天以前的脚本如下:路径是按照你给出的格式来获取的
#!/bin/bash
# Filename: /root/dellog.sh
# Delete the 180 days ago's log files.
DIR=/log/`/bin/date +%Y/%m/%d --date '180 days ago'`
/bin/rm -rf ${DIR}/*

由于考虑到要加入到crontab中 所以系统bash命令全部用了绝对路径
加入crontab
crontab -e
编辑
0 0 * * * /bin/sh /root/dellog.sh
qq120848369 2012-08-02
  • 打赏
  • 举报
回复
另一个帖子都给你说办法了, 你不会写shell?
FlyLinux 2012-08-02
  • 打赏
  • 举报
回复
你用date +%Y%m%d --date '180 days ago'可以得到180天前的日期,%Y可以单独得到年,%m得到月,%d得到日,那你就可以通过一层一层比较得到180天前的了;而每天0点删除则可以通过crontab实现

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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