logrotate 在手动运行时有效,在使用 cron 运行时无效

logrotate 在手动运行时有效,在使用 cron 运行时无效

这是在 Ubuntu Server 14.04 上,但我认为它适用于所有操作系统。我正在logrotate作为 cron 作业运行,cron 设置是默认值(logrotate存在于/etc/cron.daily)。我正在运行一个对其日志文件很挑剔的程序——当日志文件被触摸时,该程序不会结束,但它会停止执行任何操作。

logrotate使用以下配置进行设置,相关脚本除了停止和启动给定程序之外什么也不做。当我运行时,logrotate -vf /etc/logrotate.conf它工作得很好——程序被终止,所有日志都被轮换,并且程序重新启动。然而,当它自动运行时,有些东西不起作用——我早上起床,程序正在运行,但没有做任何事情,就好像它的日志文件在运行时被触及一样。日志被旋转,也是logrotate如此,但它显然没有正确停止/启动程序。这些脚本在所有点上都使用完整路径,没有任何内容被缩短。

是否logrotate以其默认设置(logrotate在 中/etc/cron.daily)以 root 身份运行?如果没有,我怎样才能让它这样做?这还是问题吗?

删除了文件特定信息的配置文件(有问题的文件除外):

# see "man logrotate" for details
# rotate log files weekly
weekly

# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog

# keep 4 weeks worth of backlogs
rotate 4

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

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

# packages drop log rotation information into this directory
include /etc/logrotate.d

# system-specific logs may be configured here
/home/username/.local/share/bot/bot.log {
    compress
    daily
    nomail
    rotate 14
    prerotate
        /home/username/botscripts/wbstop.sh
    endscript
    postrotate
        /home/username/botscripts/wbstart.sh
    endscript
}

如果有帮助的话,这是两个脚本。该程序需要几秒钟才能完全关闭,这就是它休眠的原因。wbstop.sh:

#!/bin/sh
pkill -INT -f bot.py
sleep 8

wbstart.sh:

#!/bin/sh
sleep 5
python3 /home/username/bot/bot.py &

相关内容