我的bash脚本生成一个日志文件。现在我想实现一些日志文件旋转。
比方说第一次,它被称为somelog.log,它更名为somelog.log.1和新的日志文件somelog.log下一次。
第三次新的日志是somelog.log了,但somelog.log.1更名为somelog.log.2和老somelog.log到somelog.log.1。
我将能够授予最大例如5.
这是否完成之前(示例脚本),任何建议。我很欣赏任何建议。Bash脚本日志文件轮换
7
A
回答
2
试试这个bash函数,它有两个参数:
- 数量最大兆字节的文件应该超过被旋转(否则让不变)
- 文件名的完整路径。
来源:
function rotate() {
# minimum file size to rotate in MBi:
local MB="$1"
# filename to rotate (full path)
local F="$2"
local msize="$((1024*1024*${MB}))"
test -e "$F" || return 2
local D="$(dirname "$F")"
local E=${F##*.}
local B="$(basename "$F" ."$E")"
local s=
echo "rotate msize=$msize file=$F -> $D | $B | $E"
if [ "$(stat --printf %s "$F")" -ge $msize ] ; then
for i in 8 9 7 6 5 4 3 2 1 0; do
s="$D/$B-$i.$E"
test -e "$s" && mv $s "$D/$B-$((i+1)).$E"
# emtpy command is need to avoid exit iteration if test fails:
:;
done &&
mv $F $D/$B-0.$E
else
echo "rotate skip: $F < $msize, skip"
fi
return $?
}
0
我只是做了一个bash脚本: https://github.com/lingtalfi/logrotator
它基本上会检查你的日志文件的大小,如果超过任意的阈值,它复制将日志文件放入日志目录中。
这是cron友好的,或者你也可以手动使用它。
的典型命令看起来像这样:
> ./logrotator.sh -f private/log -m {fileName}.{datetime}.txt -v
相关问题
- 1. 使用bash脚本在linux/solaris上进行日志轮换
- 2. Bash脚本来解析日志文件
- 3. Logback日志文件轮换策略
- 4. Bash脚本获取当日日志
- 5. jboss日志轮换
- 6. bash的日志文件转换为CSV
- 7. 的Bash shell脚本 - 写入自定义日志文件
- 8. Bash脚本日志文件显示不断屏幕
- 9. 阅读日志bash脚本时出错
- 10. QuickFIX:日志轮换功能
- 11. 编写bash脚本来更改文本并写入日志
- 12. 输出shell脚本到日志文件
- 13. shell脚本来分析日志文件
- 14. bash脚本:提取和转换文件
- 15. 转换自定义日志文件导入TSV(shell脚本)
- 16. Util日志记录不会删除旧日志文件轮流
- 17. Windows事件日志与文本日志
- 18. 将文本文件中的所有值转换为bash中的日志比例
- 19. Bash监视jPos XML日志文件
- 20. 如何计算ip用于登录bash脚本中的日志文件?
- 21. 如何使用bash脚本在日志文件中搜索多个字符串
- 22. BASH脚本检查当前月份和上个月的日志文件
- 23. 阅读Bash脚本文件
- 24. 运行BASH脚本文件
- 25. bash脚本读取文件
- 26. Bash脚本复制文件
- 27. bash脚本查找文件
- 28. 文件搜索bash脚本
- 29. Linux/c + +日志轮换计划
- 30. Ruby on Rails生产日志轮换
人[logrotate的](http://linux.die.net/man/8/logrotate)? – 2010-09-11 06:13:16
已经回答。 [这里] [1] [1]:http://stackoverflow.com/questions/3690936/change-file-name-suffixes-using-sed/3691279#3691279 – 2011-01-29 15:18:56