У меня есть HA-кластер с samba, запущенным на активном узле, теперь я получаю эти ошибки в моем корневом почтовом ящике:
Can't find pid for destination 'smbd'
error: error running non-shared postrotate script for /var/log/samba/log.smbd of '/var/log/samba/log.smbd '
Can't find pid for destination 'nmbd'
error: error running non-shared postrotate script for /var/log/samba/log.nmbd of '/var/log/samba/log.nmbd '
run-parts: /etc/cron.daily/logrotate exited with return code 1
Могу ли я сделать Logrotate перезапускать службу, только если она была запущена?
В соответствии с запросом конфигурации logrotate smane
/var/log/samba/log.smbd {
weekly
missingok
rotate 7
postrotate
[ ! -x /usr/bin/smbcontrol ] || /usr/bin/smbcontrol smbd reload-config
endscript
compress
delaycompress
notifempty
}
/var/log/samba/log.nmbd {
weekly
missingok
rotate 7
postrotate
[ ! -x /usr/bin/smbcontrol ] || /usr/bin/smbcontrol nmbd reload-config
endscript
compress
delaycompress
notifempty
}
/var/log/samba/log.samba {
weekly
missingok
rotate 7
postrotate
if [ -d /run/systemd/system ] && command systemctl >/dev/null 2>&1 && systemctl is-active --quiet samba-ad-dc; then
systemctl kill --kill-who all --signal=SIGHUP samba-ad-dc
elif [ -f /var/run/samba/samba.pid ]; then
# This only sends to main pid, See #803924
kill -HUP `cat /var/run/samba/samba.pid`
fi
endscript
compress
delaycompress
notifempty
}
Теперь, основываясь на вашей конфигурации logrotate, я могу понять, откуда берутся эти ошибки. Они взяты из инструмента smbcontrol, который возвращает код ошибки, если не может найти PID smbd/nbmd.
Вот простое решение для игнорирования этих ошибок в сценариях ротации журналов: добавьте || true
после строк /usr/bin/smbcontrol [sn]mbd reload-config
. т.е. первая часть должна выглядеть так
postrotate
[ ! -x /usr/bin/smbcontrol ] || /usr/bin/smbcontrol smbd reload-config || истинный
эндскрипт