Кажется, что мои файлы журналов, созданные syslog, меняются дважды в день. Я считаю, что это связано с тем, что /etc/cron.daily/logrotate и /etc/cron.daily/sysklogd выполняют перекрывающуюся работу.
Вот соответствующие строки из сценария sysklogd:
logs=$(syslogd-listfiles)
test -n "$logs" || exit 0
for LOG in $logs
do
if [ -s $LOG ]; then
savelog -g adm -m 640 -u ${USER} -c 7 $LOG >/dev/null
fi
done
Каковы лучшие распространенные практики для решения этой проблемы? Должны ли файлы, созданные syslog, не отображаться в logrotate? Что, если я хочу использовать некоторые из более продвинутых функций logrotate, такие как сценарии postrotate - должен ли я попытаться заставить это сделать /etc/cron.daily/sysklogd или мне следует закомментировать эти строки и позволить logrotate сделать это?
Я был очень раздражен, когда sysklogd начал ротацию журналов - это не значит, что это отсутствующая функция, которой не было в другом месте. Однако в моих системах logrotate не настроен для каких-либо действий с системными журналами - это то, что вы настроили вручную?
Чтобы сохранить принцип наименьшего удивления, я оставляю sysklogd для ротации его собственных журналов (исходя из того, что, если кому-то еще нужно поддерживать одну из моих систем, лучше, если они будут использовать поведение по умолчанию, где это возможно), но если вы хотите, чтобы logrotate расширенный функции, я бы отключил задание sysklogd cron, закомментировал указатель на правильное место и пошел бы logrotate wild.
Какая раздача?
Если вы запустите "syslogd-listfiles", будет ли какой-либо из файлов, выводимых в этом списке, также управляться через файл в /etc/logrotate.d/?
Глядя на мой ящик Ubuntu, /etc/cron.daily/sysklogd на самом деле ничего не делает, потому что / usr / sbin / syslogd-listfiles не существует.