Eu tenho um servidor VPS Ubuntu (9.04 / Jaunty) que não está girando corretamente syslogs.
Aqui está o que eu verifiquei até agora:
- syslogd-listfiles lista os arquivos que eu acho que devem ser rotacionados
- cron.daily está em execução (assim diz o syslog)
- quando executo manualmente as verificações de arquivos no início do /etc/cron.daily/sysklogd, todas elas passam (
test -x /usr/sbin/syslogd-listfiles
, test -x /sbin/syslogd
, test -f /usr/share/sysklogd/dummy
)
- quando executo manualmente o trabalho cron.daily como raiz (
sudo run-parts --verbose /etc/cron.daily
), os logs são rotacionados como seria de esperar
Alguém tem alguma ideia do que eu possa tentar em seguida ou o que eu possa estar perdendo? Eu estava pensando que talvez o fato de o sysklogd estar executando o processo como syslog (o dono do syslogd per ps -C syslogd -o user= | head -n 1
) significa que há algum tipo de problema de permissões, e isso parece ser suportado pelos resultados da execução de sudo -u syslog run-parts --verbose /etc/cron.daily
que acaba com um monte de erros de permissões, mas não tenho certeza qual é a melhor maneira de resolver isso.
O conteúdo do meu arquivo sysklogd segue, no caso de ser útil. O touch /etc/crontouchtest
bit é algo que inseri para verificar quando o arquivo é executado com sucesso. Ele atualiza o último tempo usado ( ls -lut /etc/crontouchtest
) quando executo as partes de execução como raiz, mas não quando o cron é executado.
#! /bin/sh
# sysklogd Cron script to rotate system log files daily.
#
# If you want to rotate other logfiles daily, edit
# this script. An easy way is to add files manually,
# to add -a (for all log files) to syslogd-listfiles and
# add some grep stuff, or use the -s pattern argument to
# specify files that must not be listed.
#
# This is a configration file. You are invited to edit
# it and maintain it on your own. You'll have to do
# that if you don't like the default policy
# wrt. rotating logfiles (i.e. with large logfiles
# weekly and daily rotation may interfere). If you edit
# this file and don't let dpkg upgrade it, you have full
# control over it. Please read the manpage to
# syslogd-listfiles.
#
# Written by Martin Schulze <[email protected]>.
# $Id: cron.daily,v 1.14 2007-05-28 16:33:34 joey Exp $
test -x /usr/sbin/syslogd-listfiles || exit 0
test -x /sbin/syslogd || exit 0
test -f /usr/share/sysklogd/dummy || exit 0
touch /etc/crontouchtest
USER=$(ps -C syslogd -o user= | head -n 1)
[ -z "${USER}" ] && USER="root" || true
set -e
cd /var/log
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
# Restart syslogd
#
/etc/init.d/sysklogd reload-or-restart > /dev/null
EDITAR
Saídas conforme solicitado:
ls -la /etc/cron.daily (run as root)
drwxr-xr-x 2 root root 4096 Oct 23 07:13 .
drwxr-xr-x 107 root root 4096 Oct 23 07:14 ..
-rwxr-xr-x 1 root root 314 Feb 10 2009 aptitude
-rwxr-xr-x 1 root root 111 May 11 11:49 backup-manager
-rwxr-xr-x 1 root root 89 Jan 26 2009 logrotate
-rwxr-xr-x 1 root root 1334 Oct 22 09:35 sysklogd
ps -ef | egrep '[c]ron' (run as root)
root 13369 1 0 Oct21 ? 00:00:02 /usr/sbin/cron
EDIT 2
Caminhos respectivos
de echo $PATH
(depois de swithcing to root):
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
de /etc/crontab
:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin