Logrotate 显示已旋转日志,但实际上并未旋转

Logrotate 显示已旋转日志,但实际上并未旋转

好的,我的情况如下。我尝试使用 logrotate 每小时轮换特定用户的 VNC 日志。根据我运行该实用程序时收到的反馈,日志轮换已停止,但当我查看所涉及的目录时,实际上没有任何变化。

系统是 Ubuntu 18.02 LTS。我通过 SSH 远程进行所有管理。

在我运行我的工作之前,/home/guest/.vnc 目录如下所示:

localadmin@xfce-kiosk-production-working:/etc$ sudo ls -l /home/guest/.vnc
total 120
-rw------- 1 guest guest      8 Oct 13 05:33 passwd
-rw-rw-r-- 1 guest guest 112995 Feb  1 14:56 xfce-kiosk-production-working:1.log
-rwxr-xr-x 1 guest guest    274 Oct 13 05:39 xstartup

我像这样调用我的脚本cron.hourly

sudo /etc/cron.hourly/logrotate
bash: guest: No such file or directory
reading config file /etc/logrotate.hourly.conf
Reading state from file: /var/lib/logrotate/status
Allocating hash table for state file, size 64 entries
Creating new state
["Creating new state" x28 deleted]

Handling 1 logs

rotating pattern: /home/guest/.vnc/xfce-kiosk-production-working:1.log  102400 bytes (4 rotations)
empty log files are rotated, old logs are removed
considering log /home/guest/.vnc/xfce-kiosk-production-working:1.log
Creating new state
  Now: 2021-02-01 14:58
  Last rotated at 2021-02-01 14:00
  log needs rotating
rotating log /home/guest/.vnc/xfce-kiosk-production-working:1.log, log->rotateCount is 4
dateext suffix '-20210201'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /home/guest/.vnc/xfce-kiosk-production-working:1.log to /home/guest/.vnc/xfce-kiosk-production-working:1.log-20210201
creating new /home/guest/.vnc/xfce-kiosk-production-working:1.log mode = 0664 uid = 1001 gid = 1001

但当我回到目录时:

localadmin@xfce-kiosk-production-working:/etc$ sudo ls -l /home/guest/.vnc
total 120
-rw------- 1 guest guest      8 Oct 13 05:33 passwd
-rw-rw-r-- 1 guest guest 112995 Feb  1 14:56 xfce-kiosk-production-working:1.log
-rwxr-xr-x 1 guest guest    274 Oct 13 05:39 xstartup

我的/etc/cron.hourly/logrotate脚本:

#!/bin/sh
su guest guest

/usr/sbin/logrotate -d /etc/logrotate.hourly.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
        /usr/bin/logger -t logrotate "ALERT hourly job exited abnormally with [$EXITVALUE]"
fi
exit 0

和我的/etc/logrotate/hourly.conf文件:

/home/guest/.vnc/xfce-kiosk-production-working:1.log {
        size 100k
        create 664 guest guest
        rotate 4
        missingok
        dateext
}

提前致谢。我是 logrotate 的新手,所以我仍在尝试理解这里的事情。

编辑

我发现问题是一个权限问题 -su guest guest脚本中的命令正在启动一个新的 shell,不会导致脚本的其余部分以访客身份执行,并且默认logrotate用户没有权限访问相关日志。

我最终删除了该/etc/cron.hourly/logrotate脚本并将以下内容放入/etc/crontab

0 * * * * root logrotate -f /etc/logrotate/hourly.conf

这会导致 logrotate 作业每小时执行一次,并且由于它以 root 身份运行,因此不存在权限问题。

感谢所有与我联系并提出建议的人!

答案1

杰夫,

我认为你应该su guest guest从脚本中删除它。我怀疑这是根本原因,但它可以有所帮助,因为:

  • 无论如何,这个作业应该由 root 运行(您可以看到它按预期创建了新文件:uid = 1001 gid = 1001- 我猜是guest
  • su 带有 2 个参数将会出错(我们可以看到bash: guest: No such file or directory
  • 如果 su 成功,它将停止脚本,直到 su 命令完成,这不是有意的(这sudo -u guest是一个技巧,但我认为你在这里不需要它)

除此之外,我没有发现任何问题,而且奇怪的是脚本运行后没有任何变化,即使我们可以看到旋转器正在做什么(或试图做什么)。

相关内容