web-dev-qa-db-ja.com

LogrotateはCentOSのcronからは機能しません

CentOS 6でlograotateを構成しました。手動で実行すると正常に機能しますが、CRONでは機能しません。 cronはログで次のように述べています。詳細:

cat /etc/logrotate.d/myproject

/var/opt/myproject/log/error.log {
    size=200M
    rotate 25
    missingok
    notifempty
    copytruncate
    nocreate
    nocompress
    nodateext
}

cat /etc/cron.d/1everymin

Shell=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
* * * * * root /etc/cron.min/logrotate

cat /etc/cron.min/logrotate

#!/bin/sh

#/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
/usr/sbin/logrotate -v /etc/logrotate.conf > /logrotate.log
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

/ var/log/cronに表示される毎分

Jan 16 21:40:01 localhost CROND[31541]: (root) CMD (/etc/cron.min/logrotate)
Jan 16 21:41:01 localhost CROND[31552]: (root) CMD (/etc/cron.min/logrotate)
Jan 16 21:42:01 localhost CROND[31561]: (root) CMD (/etc/cron.min/logrotate)
Jan 16 21:43:01 localhost CROND[31575]: (root) CMD (/etc/cron.min/logrotate)
Jan 16 21:44:01 localhost CROND[31587]: (root) CMD (/etc/cron.min/logrotate)

しかし、ログは実際にはローテーションされていません。何も起こらず、/ logrotate.logは空です。

/ etc/cron.min/logrotateを手動で実行すると、すべて正常に機能します。/logrotate.logにはログローテーションに関する情報があります。

3
odiszapc

SELinuxが有効になっている場合、cronは書き込みを許可されません/有効になっているかどうかを確認するには、次を使用します。

getenforce

/var/log/logrotate.logなど、一時的に別の場所にログを記録してみてください

Auditdが有効になっていると仮定して、必ず/var/log/audit/auditd.logで拒否を探してください。

1
Aaron