Logrotate 不会将文件移动到 oldlogs 文件夹并异常退出,代码为 1。我尝试使用 -d 选项手动启动它,但没有显示任何错误。这是我的配置:
/var/log/myfolder/*.log
{
rotate 4
daily
missingok
size=100M
notifempty
copytruncate
compress
delaycompress
create 640 root root
dateformat -%Y-%m-%d-%s
sharedscripts
postrotate
mv /var/log/myfolder/*.gz /var/log/myfolder/oldlogs/
/etc/init.d/rsyslog restart
endscript
}
任何想法?
我有许多文件需要不断更新,我想将压缩文件放在另一个目录 (oldlogs) 中以便存储。对于我的目的来说,rotate 命令是不必要的,但我的问题是我无法将文件移动到 oldlogs 目录。
答案1
您不需要自己移动旧日志文件,日志轮换会为您完成此项工作。
您不需要在postrotate
脚本中重新启动 rsyslog,除非您要轮换从 rsyslog 写入的日志。如果是这种情况,您不需要完全重新启动 rsyslog,而是使用kill -HUP $(cat /var/run/rsyslogd.pid)
(假设这是 rsyslog 的 pid)。
目标是让服务停止尝试写入旧文件处理程序并开始写入新的日志文件。
如果您尝试对由其他服务写入的日志进行日志轮转,-HUP
可能不受支持。
使用什么驱动程序copy truncate
?这有点奇怪。
更多详细信息请参阅Logrotate
https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html
答案2
-vf
我猜如果你想让 logrotate 运行now
,你需要-d
禁用任何操作,有关详细信息,请查看man logrotate
。
答案3
您将需要使用完整路径以及mv
开关-f
来强制移动。