O pacote logrotate permite rotação, compressão, remoção e envio automático de arquivos de registro.
Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.1.
Transferência (HTTP): https://github.com/logrotate/logrotate/releases/download/3.21.0/logrotate-3.21.0.tar.xz
Soma de verificação MD5 da transferência: 6c15f45efc3475a576c4f7e6cc481b2c
Tamanho da transferência: 164,5 KB
Espaço em disco estimado exigido: 2,9 MB (adicionar 38 MB para os testes)
Tempo de construção estimado: menos que 0,1 UPC (adicionar 0,2 UPC para testes)
Um MTA (tempo de execução)
Instale logrotate executando o seguinte comando:
./configure --prefix=/usr && make
Para testar os resultados, emita: make test. Um teste falha porque o muito antigo compress não está presente e dois testes falham se um "MTA" não estiver instalado.
Agora, como o(a) usuário(a) root
:
make install
Logrotate precisa de um arquivo de
configuração, o qual precisa ser passado como um argumento para o
comando quando executado. Crie o arquivo como o(a) usuário(a)
root
:
cat > /etc/logrotate.conf << EOF
# Começo /etc/logrotate.conf
# Rotacione os arquivos de registro semanalmente
weekly
# Não envie registros para ninguém
nomail
# Se o arquivo de registro estiver vazio, [então] ele não será rotacionado
notifempty
# Número de cópias de segurança que serão mantidas
# Isto manterá somente as duas cópias de segurança mais recentes
rotate 2
# Crie novos arquivos vazios depois de rotacionar os antigos
# Isto criará arquivos de registro vazios, com o(a) proprietário(a)
# configurado como "root", grupo configurado como "sys" e permissões 664
create 0664 root sys
# Comprime as cópias de segurança com o "gzip"
compress
# Nenhum pacote possui "lastlog" ou "wtmp" - rotacione-os aqui
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
/var/log/lastlog {
monthly
rotate 1
}
# Alguns pacotes colocam informações de rotação de registro neste diretório
# de forma que incluímos qualquer arquivo nele.
include /etc/logrotate.d
# Fim /etc/logrotate.conf
EOF
chmod -v 0644 /etc/logrotate.conf
Agora crie o diretório /etc/logrotate.d
como o(a) usuário(a)
root
:
mkdir -p /etc/logrotate.d
Neste ponto, comandos adicionais de rotação de registro conseguem
ser inseridos, normalmente no diretório /etc/logrotate.d
. Por exemplo:
cat > /etc/logrotate.d/sys.log << EOF
/var/log/sys.log {
# Se o arquivo de registro for maior que 100 KB, [então] rotacione-o
size 100k
rotate 5
weekly
postrotate
/bin/killall -HUP syslogd
endscript
}
EOF
chmod -v 0644 /etc/logrotate.d/sys.log
Você consegue designar vários arquivos em uma entrada:
cat > /etc/logrotate.d/example.log << EOF
file1
file2
file3 {
...
postrotate
...
endscript
}
EOF
chmod -v 0644 /etc/logrotate.d/example.log
Você consegue usar na mesma linha a lista de arquivos: arquivo1 arquivo2 arquivo3. Veja-se a página de manual do "logrotate" ou https://www.techrepublic.com/article/manage-linux-log-files-with-logrotate/ para mais exemplos.
O comando logrotate
/etc/logrotate.conf pode ser executado manualmente,
porém o comando deveria ser executado diariamente. Outros comandos
úteis são logrotate -d
/etc/logrotate.conf para fins de depuração e
logrotate -f
/etc/logrotate.conf forçando os comandos do
"logrotate" a serem executados imediatamente. Combinando as opções
anteriores -df
, você consegue depurar o
efeito do comando "force". Durante a depuração, os comandos são
somente simulados e não são realmente executados. Como resultado,
erros a respeito de arquivos inexistentes aparecerão eventualmente
porque os arquivos não foram realmente criados.
Para executar o comando logrotate diariamente,
execute os seguintes comandos, como
o(a) usuário(a) root
, para criar
um cronômetro do "systemd" para executar
diariamente às 3h (hora local):
cat > /usr/lib/systemd/system/logrotate.service << "EOF" &&[Unit] Description=Executa o comando "logrotate" Documentation=man:logrotate(8) DefaultDependencies=no After=local-fs.target Before=shutdown.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/logrotate /etc/logrotate.conf
EOF cat > /usr/lib/systemd/system/logrotate.timer << "EOF" &&[Unit] Description=Executa o comando "logrotate" diariamente as 3:00 AM [Timer] OnCalendar=*-*-* 3:00:00 Persistent=true [Install] WantedBy=timers.target
EOF systemctl enable logrotate.timer