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

Vla*_*mir 507 logging logrotate

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

pil*_*row 681

是: logrotate --force $CONFIG_FILE

  • 请注意,`--force`将旋转文件,即使它们不符合指定的标准,如minsize,age等. (108认同)
  • 标准"notifempty"不会被"--force"忽略.这让我困扰了一段时间,所以我提到这是@xofer声明的一个例外. (16认同)
  • 你可以用`logrotate --force/etc/logrotate.d /`(只是目录名)来全部旋转 (14认同)
  • 如果将logrotate配置文件放在/etc/logrotate.d/custom.conf中,这是否意味着,您不需要指定日志应自动旋转的大小/时间?或者,如果您不打算让配置自动轮换,您应该将配置放在不同的文件夹中吗? (4认同)
  • 确实,即使文件不符合条件(年龄、大小等),`--force` 也会强制轮换,但请考虑到这是发现使用 `logrotate -d` 不会出现的实际问题的唯一方法(例如,由于 logrotate 几个月没有运行,我的服务器空间不足……多亏了“--force”,我发现存在“文件存在”错误。我手动删除了这些文件,现在可以正确旋转又起作用了! (4认同)

san*_*ver 518

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

  • 那些来到这里寻找"如何测试我的logrotate conf?"之类问题答案的人 可以把这一个作为答案,因为它只是测试conf (77认同)
  • 伙计们,如果您的配置中有错误,这不会返回非零状态代码。 (2认同)

tri*_*web 115

如果要强制运行单个特定目录或守护程序的日志文件,通常可以在其中找到配置/etc/logrotate.d,它们将独立运行.

请记住,指定的全局配置/etc/logrotate.conf将不适用,因此,如果这样做,您应确保具体指定/etc/logrotate.d/[servicename]配置文件中所需的所有选项.

您可以尝试一下,-d看看会发生什么:

logrotate -df /etc/logrotate.d/nginx
Run Code Online (Sandbox Code Playgroud)

然后你可以运行(使用nginx作为例子):

logrotate -f /etc/logrotate.d/nginx
Run Code Online (Sandbox Code Playgroud)

并且单独的nginx日志将被轮换.

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

viv*_*ekv 58

您可能希望以详细+强制模式运行它.

logrotate -vf /etc/logrotate.conf


All*_*ock 34

运行所有logrotate的方法是:

logrotate -f /etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)

这将运行主logrotate文件,其中包括其他logrotate配置


小智 21

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

logrotate -vf /etc/logrotate.d/custom
Run Code Online (Sandbox Code Playgroud)

选项:

-v:显示进程

-f:强制运行

custom:用户定义的日志设置

例如:mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}
Run Code Online (Sandbox Code Playgroud)


ant*_*ony 6

创建一个shell脚本来解决这个问题。

https://antofthy.gitlab.io/software/#logrotate_one

该脚本将仅运行“/etc/logrotate.d”中的单个 logrotate 子配置文件,但包含全局配置文件“/etc/logrotate.conf”中的全局​​设置。您还可以使用其他选项来测试它......

例如...

  logrotate_one -d syslog
Run Code Online (Sandbox Code Playgroud)


Ben*_*ing 5

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

然后运行logrotate YOUR_CONFIG_FILE

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