是否可以手动运行一次 logrotate 迭代而不在某个时间间隔安排它?
8 回答
是的: logrotate --force $CONFIG_FILE
logrotate -d [your_config_file]
调用调试模式,为您详细描述将会发生的事情,但保持日志文件不变。
如果要强制运行单个特定目录或守护程序的日志文件,通常可以在 中找到配置/etc/logrotate.d
,它们将独立运行。
请记住,其中指定的全局配置将不适用,因此如果您这样做,您应该确保在配置文件中专门/etc/logrotate.conf
指定所有您想要的选项。/etc/logrotate.d/[servicename]
你可以试试看-d
会发生什么:
logrotate -df /etc/logrotate.d/nginx
然后就可以运行了(以nginx为例):
logrotate -f /etc/logrotate.d/nginx
并且仅 nginx 日志将被轮换。
您可能希望以详细 + 强制模式运行它。
logrotate -vf /etc/logrotate.conf
运行所有 logrotate 的方法是:
logrotate -f /etc/logrotate.conf
这将运行主 logrotate 文件,其中还包括其他 logrotate 配置
发出以下命令,运行指定 logrotate 的方式:
logrotate -vf /etc/logrotate.d/custom
选项:
-v : 显示进程
-f : 强制运行
custom :用户自定义日志设置
例如:mongodb-log
# mongodb-log rotate
/data/var/log/mongodb/mongod.log {
daily
dateext
rotate 30
copytruncate
missingok
}
编辑 /var/lib/logrotate.status(或 /var/lib/loglogrotate/logrotate.status)以重置您要测试的日志文件上的“最后轮换”日期。
然后运行logrotate YOUR_CONFIG_FILE
。
或者,您可以使用 --force 标志,但编辑 logrotate.status 可以让您更精确地确定旋转和不旋转的内容。
创建了一个shell脚本来解决这个问题。
https://antofthy.gitlab.io/software/#logrotate_one
该脚本将仅运行“/etc/logrotate.d”中的单个 logrotate 子配置文件,但包含全局配置文件“/etc/logrotate.conf”中的全局设置。您也可以使用其他选项进行测试...
例如...
logrotate_one -d syslog