Cria um novo arquivo syslog na inicialização

2

Eu quero criar um novo arquivo syslog toda vez que o sistema inicializar e salvar os dados antigos em outro arquivo para que eu possa detectar um comportamento anormal na inicialização atual, se houver. Existe alguma configuração para o syslogd que pode conseguir isso. Ou um trabalho de crontab com logrotate deve ser usado para conseguir isso?

    
por hmehra 16.03.2015 / 21:49

1 resposta

1

Adicione essas linhas (que são agnósticas ao shell) a /etc/rc.local , ou coloque-as em um arquivo de script (precedido pelo shebang #!/bin/sh ) e coloque uma linha para executá-lo em /etc/rc.local . / p>

# find the line number for the (most recent) start of syslog
LOGSTART=$(grep -n "syslog.*start" /var/log/syslog.1|cut -f1 -d:|tail -n1)
# give up if none found
[ -n "$LOGSTART" ] || exit 0
# add preceding lines to the long-term log
sed "$LOGSTART,\$d" /var/log/syslog >>/var/log/syslog.old
# make a copy of the log
cp /var/log/syslog /tmp/syslog
# recreate the active log
sed -n "$LOGSTART,\$p" /tmp/syslog >/var/log/syslog
# remove the copy
rm /tmp/syslog

Pode ser melhor parar o syslogd (ou rsyslogd ou qualquer outro) durante este processo e reiniciá-lo depois, mas deixei isso para o seu dever de casa.

Verifique primeiro que grep "syslog.*start" /var/log/syslog de fato encontre linhas marcando a inicialização do seu criador de logs do sistema, caso contrário, modifique essa linha apropriadamente. O arquivo de log às vezes é / var / log / messages, mas presumivelmente não no seu caso desde que você mencionou o syslog.

    
por 17.03.2015 / 07:58