logrotate 不工作

eri*_*icn 4 logrotate

我想为我的 Tomcat 服务器的 catalina.out 日志文件设置每日 logrotate,但它不起作用 - 我还没有看到创建的旋转日志文件。
为了排除故障,我运行logrotate -d /etc/logrotate.conf并得到以下信息:

rotating pattern: /usr/local/tomcat/logs/catalina.out  5242880 bytes (7 rotations)
empty log files are rotated, old logs are removed
considering log /usr/local/tomcat/logs/catalina.out
  log needs rotating
rotating log /usr/local/tomcat/logs/catalina.out, log->rotateCount is 7
dateext suffix '-20151223'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
copying /usr/local/tomcat/logs/catalina.out to /usr/local/tomcat/logs/catalina.out-20151223
truncating /usr/local/tomcat/logs/catalina.out
compressing log with: /bin/gzip 
Run Code Online (Sandbox Code Playgroud)

似乎一切正常,没有任何错误。但是,没有结果:

[root@gec logrotate.d]# ls -lrth /usr/local/tomcat/logs/cata*
-rw-r--r-- 1 root root  398 Dec  4 17:48 /usr/local/tomcat/logs/catalina.2015-12-04.log
-rw-r--r-- 1 root root 109M Dec 23 17:21 /usr/local/tomcat/logs/catalina.out 
Run Code Online (Sandbox Code Playgroud)

我的/etc/logrotate.conf

daily

rotate 7

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d 
Run Code Online (Sandbox Code Playgroud)

我的/etc/logrotate.d/tomcat

/usr/local/tomcat/logs/catalina.out {
    copytruncate
    daily
    rotate 7
    compress
    missingok
    size 5M
}  
Run Code Online (Sandbox Code Playgroud)

怎么了?

更新:

有趣的是,运行logrotate -f /etc/logrotate.conf会创建旋转 gzip 文件!

[root@gec logrotate.d]# ls -lrth /usr/local/tomcat/logs/cata*
-rw-r--r-- 1 root root  398 Dec  4 17:48 /usr/local/tomcat/logs/catalina.2015-12-04.log
-rw-r--r-- 1 root root 1.1M Dec 23 17:26 /usr/local/tomcat/logs/catalina.out-20151223.gz
-rw-r--r-- 1 root root 109K Dec 23 17:27 /usr/local/tomcat/logs/catalina.out
Run Code Online (Sandbox Code Playgroud)

但是,我怎么知道每天的 cron 工作是否有效?

Khe*_*dun 7

您正在运行logrotate -d /etc/logrotate.conf使用-d的参数。

-d参数是调试模式,你可以说这种“干运行”。如果 logrotate 可以工作但不会旋转日志,它只会为您提供信息。

logrotate -f由于工作-f参数指定的logrotate迫使logrotate的。

引用logrotate手册:

  • -d, --debug

    打开调试模式并暗示 -v。在调试模式下,不会对日志或 logrotate 状态文件进行任何更改。

  • -f, --force 告诉 logrotate 强制旋转,即使它认为没有必要。有时这在向
    logrotate 配置文件添加新条目后很有用,或者如果
    手动删除旧日志文件,因为将创建新文件,并且日志记录
    将继续正确。

如果logrotate -d /etc/logrotate.conf给你的输出是日志将被旋转和压缩,那么当 logrotate 将通过你的配置文件时,它肯定会旋转它。