Logrotate

為什麼 logrotate 不自動旋轉?

  • November 29, 2017

我已將您設置為每天輪換,但您沒有。

但是當我手動執行時,它確實有效。

logrotate -vf /etc/logrotate.conf

這是我要輪換的日誌文件。/mylogs/log (-rwxrwxrwxrwx 1 admin 管理員)

這是系統配置。

/etc/logrotate.conf (-rw-r--r-- 1 root root):

/mylogs/log {
create 0640 root utmp
missingok
daily
copytruncate
rotate 10
dateext
}

/etc/logrotate.d/syslog (-rw-r--r-- 1 root root):

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || 
true
endscript
}

/etc/cron.daily/logrotate (-rwx------ 1 root root):

#!/bin/sh

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

/etc/crontab (-rw-r--r--. 1 root root):

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR 
sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

附加資訊。CentOS 作業系統

我怎樣才能讓它正確旋轉。


更新

我認為問題在於分配 3 件事的所有者、組和權限。/mylogs/ 文件夾 (root root) /mylogs/log 文件 (admin admin)

logrotate.conf 的創建選項 (create 0640 root utmp)

logrotate 執行正常的人。請讓我知道您如何分配前 3 個值。文件夾 - 文件 - logrotate.conf 中的創建配置

經過幾次測試,我設法讓它再次正確旋轉。

為此,我分配了日誌文件的使用者 (root) 和組 (root)。

還將您的權限更改為 666。

對於包含該文件的文件夾,它被分配了組 (root) 的使用者 (root) 和 755 權限。

最後在 logrotate.conf 的配置中,分配給該屬性“create”的配置是使用者 (root)、組 (utmp) 和權限 (644)

我希望這些資訊在有人遇到類似問題時有用。

問候和謝謝。

在這裡加入兩個字元串

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status 
/etc/logrotate.conf

對於這樣的一個字元串:

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

或者在第一個字元串後加上反斜杠,如下所示:

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status \
/etc/logrotate.conf

ps 有一個很好的選項可以從 shell-x進行/bin/sh調試輸出,我想如果你下次嘗試執行,你將能夠找到這個錯誤類型/bin/sh -x /etc/cron.daily/logrotate

引用自:https://unix.stackexchange.com/questions/407113