dre*_*ard 14 linux redhat log-files logrotate
在导致日志文件旋转然后恢复到原来的大小之前,是否有人对 logrotate 有任何问题?这是我的发现:
日志旋转脚本:
/var/log/mylogfile.log { 旋转 7 日常的 压缩 olddir /log_archives 错过了 通知空 复制截断 }
Logrotate 的详细输出:
将 /var/log/mylogfile.log 复制到 /log_archives/mylogfile.log.1 截断 /var/log/mylogfile.log 使用以下命令压缩日志:/bin/gzip 删除旧日志 /log_archives/mylogfile.log.8.gz
发生截断后的日志文件
[root@server ~]# ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 part1 part1 0 Jan 11 17:32 /var/log/mylogfile.log
几秒钟后:
[root@server ~]# ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 part1 part1 3.5G Jan 11 17:32 /var/log/mylogfile.log
RHEL 版本:
[root@server ~]# cat /etc/redhat-release 红帽企业 Linux ES 第 4 版(Nahant 更新 4)
日志旋转版本:
[root@DAA21529WWW370 ~]# rpm -qa | grep 对数旋转 logrotate-3.7.1-10.RHEL4
几点注意事项:
olddir
日志文件所在的目录,日志每晚都会轮换。Kje*_*sen 20
这可能是因为即使您截断了文件,写入文件的进程仍将继续写入它最后的偏移量。所以发生的事情是 logrotate 截断文件,大小为零,进程再次写入文件,继续它离开的偏移量,现在你有一个空字节的文件,直到你截断它加上新的写入日志的条目。
od -c 截断 + 突然增长后,生成的输出如下:
0000000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
33255657600 \0 C K B - s e r v e r [ h t t
33255657620 <more log output>
Run Code Online (Sandbox Code Playgroud)
这说的是从偏移量 0 到 33255657600 您的文件由空字节组成,然后是一些清晰的数据。达到此状态所需的时间与实际写入所有这些空字节所需的时间不同。ext{2,3,4} 文件系统支持称为稀疏文件的东西,因此如果您寻找不包含任何内容的文件区域,则该区域将被假定为包含空字节并且不会占用空间磁盘上。这些空字节实际上不会被写入,只是假设在那里,因此从 0 到 3.5GB 所需的时间不会花费很多时间。(您可以通过执行类似的操作来测试所需的时间dd if=${HOME}/.bashrc of=largefile.bin seek=3432343264 bs=1
,这应该会在几毫秒内生成一个超过 3GB 的文件)。
如果您ls -ls
在日志文件被截断并再次突然增长后运行它们,它现在应该在行的开头报告一个数字,代表实际大小(以磁盘占用的块为单位),这可能是数量级小于 just 报告的大小ls -l
。
归档时间: |
|
查看次数: |
17802 次 |
最近记录: |