当前位置: 技术问答>linux和unix
linux删除180天前日志的shell
来源: 互联网 发布时间:2017-03-08
本文导语: 有一个软件生成的日志文件是这样的格式: /log/2012/01/02/log /log/2012/01/03/log /log/2012/01/04/log 说明:日志的文件夹是以时间的年、月、日命名的,部分日志可能会新导入。 日志不能自动删除,磁盘空间小,只能使用脚本...
有一个软件生成的日志文件是这样的格式:
/log/2012/01/02/log
/log/2012/01/03/log
/log/2012/01/04/log
说明:日志的文件夹是以时间的年、月、日命名的,部分日志可能会新导入。
日志不能自动删除,磁盘空间小,只能使用脚本做旧日志删除,比如每天0:00删除180天前所有的日志,删除的时候只能按文件夹名字来删除,不能按创建时间。
想写一个脚本一直运行,限于本人水平有限,有会的朋友帮帮忙,感激不尽。
/log/2012/01/02/log
/log/2012/01/03/log
/log/2012/01/04/log
说明:日志的文件夹是以时间的年、月、日命名的,部分日志可能会新导入。
日志不能自动删除,磁盘空间小,只能使用脚本做旧日志删除,比如每天0:00删除180天前所有的日志,删除的时候只能按文件夹名字来删除,不能按创建时间。
想写一个脚本一直运行,限于本人水平有限,有会的朋友帮帮忙,感激不尽。
|
删除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
#!/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
|
你用date +%Y%m%d --date '180 days ago'可以得到180天前的日期,%Y可以单独得到年,%m得到月,%d得到日,那你就可以通过一层一层比较得到180天前的了;而每天0点删除则可以通过crontab实现
|
这个略微显得麻烦。
|
find . -mtime +180 | xargs rm