logrotate在旋转python日志文件之后在日志文件上创建空字节
我有以下logrotate.conf:logrotate在旋转python日志文件之后在日志文件上创建空字节,python,logrotate,Python,Logrotate,我有以下logrotate.conf: /path/to/my/file.log { weekly copytruncate rotate 5 size 25 nocompress sharedscripts } 我有以下bash脚本来执行python: python /app/myscript.py >> /path/to/my/file.log 2>&1& logrotate在开始时以空字节运行其creat
/path/to/my/file.log {
weekly
copytruncate
rotate 5
size 25
nocompress
sharedscripts
}
我有以下bash脚本来执行python:
python /app/myscript.py >> /path/to/my/file.log 2>&1&
logrotate在开始时以空字节运行其create file.log后,如何解决它?您可以使用postrotate从日志中删除空值
/path/to/my/file.log {
weekly
copytruncate
rotate 5
size 25
nocompress
sharedscripts
postrotate
sed -i -e 's/\o00//g' "$1"
endscript
}
如果您的文件由进程处理 “sed”命令将破坏origina文件的fs条目 您的进程将写入已删除的文件 ll-i/var/log/tomcat/17/jcxu11r2d2_log4j.log 33554504-RWXR-x 1 usrcot17 cot 15957988年5月11日13:56/var/log/tomcat/17/jcxu11r2d2_log4j.log grep-l-p'\x00'/var/log/tomcat/17/jcxu11r2d2_log4j.log /var/log/tomcat/17/jcxu11r2d2_log4j.log ll/proc/121203/fd/| grep jcxu11r2d2_log4j.log lrwx-----1 usrcot17 cot 64 May 11 02:09 210->/var/log/tomcat/17/jcxu11r2d2_log4j.log lrwx-----1 usrcot17 cot 64 May 11 02:09 75->/var/log/tomcat/17/jcxu11r2d2_log4j.log sed-i-e's/\o00//g'/var/log/tomcat/17/jcxu11r2d2_log4j.log ll-i/var/log/tomcat/17/jcxu11r2d2_log4j.log 33554503-RWXR-x 1 usrcot17 cot 832371 May 11 13:57/var/log/tomcat/17/jcxu11r2d2_log4j.log grep-l-P'\x00'/var/log/tomcat/17/jcxu11r2d2_log4j.log ll/proc/121203/fd/| grep jcxu11r2d2_log4j.log ll/proc/121203/fd/| grep已删除 lrwx------1 usrcot17 cot 64 May 11 02:09 210->/var/log/tomcat/17/sedzP6J1h(已删除) lrwx------1 usrcot17 cot 64 May 11 02:09 75->/var/log/tomcat/17/sedzP6J1h(已删除) 空字符是由于来自进程的缓冲写入造成的 目前我发现的唯一“好”解决方案是让日志在应用程序流程中进行轮换