是否可以手动运行一次logrotate检查?


540

是否可以手动运行logrotate的一次迭代而无需在一定间隔内进行调度?


3
logrotate的问题在于它具有一个全局配置文件,并且不允许您运行单个日志轮转子配置文件,而仍然应用全局配置文件中设置的选项。那就是它没有一个很好的方法来运行一个日志循环文件检查,就像每天晚上从cron运行时一样。可以使用“限制这些日志文件”选项,或者更好的做法是“运行全局配置,但仅包括此子配置文件”。
安东尼

Answers:


716

是: logrotate --force $CONFIG_FILE


115
请注意,--force将旋转文件(S),即使它们不符合规定的标准,如最小尺寸,年龄等
xofer

4
如果将logrotate配置文件放置在/etc/logrotate.d/custom.conf中,这是否意味着您无需指定日志自动旋转的大小/时间?还是不希望自动旋转配置,应将其放置在其他文件夹中吗?
Damainman

18
准则“ notifempty”不会被“ --force”忽略。这让我难过了一段时间,因此我将其作为@xofer语句的例外。
thelogix

16
您可以使用logrotate --force /etc/logrotate.d/(仅目录名)旋转所有内容
fcm

1
的确,--force即使文件不符合标准(年龄,大小等),也会强制轮换,但是请考虑到这是logrotate -d找出不会出现的实际问题的唯一方法(例如,我的服务器用尽了由于logrotate没有运行数月而导致空间不足……感谢--force我发现File exists错误。我手动删除了这些文件,现在轮流再次正常工作!
lucaferrario

558

logrotate -d [your_config_file] 调用调试模式,为您提供将会发生的详细描述,但保持日志文件不变。


81
那些来这里寻找问题答案的人,例如“我如何测试我的logrotate conf?” 可以以此为答案,因为它只是测试了会议
kommradHomer 2014年

我不厌倦您的方法,但我尝试了logrotate --force并且效果很好。
本雅明·贾法里

122

如果要强制运行单个特定目录或守护程序的日志文件,通常可以在中找到配置/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日志将被轮换。


1
这很好,但是会丢失“ /etc/logrotate.conf”中的所有全局设置。我编写了一个脚本,将全局和特定的logrotate文件合并在一起,然后使用它来解决此问题。(请参阅我的回答)。
安东尼

using logrotate -d /etc/logrotate.conf也将遍历所有其他包含的conf文件。
wmassingham '19

60

您可能要在详细+强制模式下运行它。

logrotate -vf /etc/logrotate.conf


36

运行所有logrotate的方法是:

logrotate -f /etc/logrotate.conf

它将运行主要的logrotate文件,该文件还包括其他logrotate配置


21

发出以下命令,以运行指定logrotate的方式:

logrotate -vf /etc/logrotate.d/custom

选项:

-v:显示过程

-f:强制运行

自定义:用户定义的日志设置

例如:mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}

plus1用于实际提供完整示例。PS:我们如何确定logrotate对文件的实际作用
personal_cloud

7

编辑/var/lib/logrotate.status以重置要测试的日志文件上的“上次旋转”日期。

然后运行logrotate YOUR_CONFIG_FILE

或者,您可以使用--force标志,但是编辑logrotate.status可以使您更精确地旋转和不旋转。


/var/lib/logrotate.status文件在Debian Squeeze中不存在。
Lashae

尝试使用/ var / lib / logrotate / status。我不确定这是debian / redhat的事情,还是我输入“。”。我应该放在“ /”的地方。
本·阿弗林

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.