É possível executar uma verificação de rotação automática de log manualmente?


541

É possível executar uma iteração do logrotate manualmente sem agendá-lo em algum intervalo?


3
O problema com o logrotate é que ele possui um arquivo de configuração global e NÃO permite executar um único arquivo de subconfiguração de rotação de log enquanto ainda aplica as opções definidas no arquivo de configuração global. Ou seja, ele não tem uma boa maneira de executar apenas UMA verificação de arquivo de rotação de log, exatamente como faria quando executada todas as noites a partir do cron. Pode ser uma opção "limite para esses arquivos de log", ou melhor ainda, "executar a configuração global, mas incluir apenas esse arquivo de subconfiguração".
anthony

Respostas:


717

Sim: logrotate --force $CONFIG_FILE


115
nota que --forcevai rodar arquivo (s) mesmo se eles não atendem aos critérios especificados como minsize, idade, etc.
xofer

4
Se você colocar o arquivo de configuração logrotate em /etc/logrotate.d/custom.conf, isso significa que você não precisa especificar um tamanho / hora em que o log deve girar automaticamente? Ou você deve colocar a configuração em uma pasta diferente se não pretender fazê-la girar automaticamente?
Damainman 07/08

18
O critério "notifempty" não é ignorado por "--force". Isso me surpreendeu por um tempo, então mencionei isso como uma exceção à instrução @xofer.
Thelogix 29/09/2015

16
Você pode simplesmente girar todos com logrotate --force /etc/logrotate.d/(apenas nome do diretório) #
fcm 26/02

1
É verdade que --forceforçará a rotação mesmo que os arquivos não atendam aos critérios (idade, tamanho etc.), mas considere que essa é a única maneira de identificar problemas reais que logrotate -dnão surgiriam (por exemplo, eu tinha um servidor ficando sem espaço devido a não logrotate funcionando por meses ... e graças a --forceeu descobri que havia File exists. erros I excluído manualmente esses arquivos e agora rotação corretamente funciona novamente!
lucaferrario

559

logrotate -d [your_config_file] chama o modo de depuração, fornecendo uma descrição detalhada do que aconteceria, mas deixando os arquivos de log intocados.


81
aqueles que vieram aqui procurando a resposta de uma pergunta como "como posso testar meu logrotate conf?" pode levar um presente como uma resposta, uma vez que apenas testa a conf
kommradHomer

não se atrapalhou com a sua abordagem, tentei logrotate --forcee funciona bem.
Benyamin Jafari

122

Se você deseja forçar a execução de um único diretório específico ou dos arquivos de log do daemon, geralmente é possível encontrar a configuração /etc/logrotate.de eles funcionarão autônomos.

Lembre-se de que a configuração global especificada em /etc/logrotate.confnão se aplicará; portanto, se você fizer isso, deverá especificar todas as opções desejadas /etc/logrotate.d/[servicename]especificamente no arquivo de configuração.

Você pode experimentá-lo -dpara ver o que aconteceria:

logrotate -df /etc/logrotate.d/nginx

Então você pode executar (usando o nginx como exemplo):

logrotate -f /etc/logrotate.d/nginx

E os logs nginx sozinhos serão girados.


1
Isso é bom, mas você perde as configurações globais existentes no "/etc/logrotate.conf". Eu escrevi um script para mesclar os arquivos de rotação global e específicos e depois usá-lo para resolver esse problema. (veja minha resposta).
Anthony

O uso também logrotate -d /etc/logrotate.confserá executado em qualquer outro arquivo conf incluído.
21419 wmassingham

61

Você pode querer executá-lo no modo detalhado + forçar.

logrotate -vf /etc/logrotate.conf


36

A maneira de executar todo o logrotate é:

logrotate -f /etc/logrotate.conf

que executará o arquivo de logrotate primário, que inclui as outras configurações de logrotate


21

Emita o seguinte comando, a maneira de executar o logrotate especificado:

logrotate -vf /etc/logrotate.d/custom

Opções:

-v: mostra o processo

-f: forçando execução

customizado: configuração de log definida pelo usuário

por exemplo: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}

plus1 por realmente fornecer um exemplo completo. PS Como podemos determinar o que o logrotate realmente faz nos arquivos ?
Personal17 #

7

edite /var/lib/logrotate.status para redefinir a data da 'última rotação' no arquivo de log que você deseja testar.

Então corra logrotate YOUR_CONFIG_FILE.

Ou você pode usar o sinalizador --force, mas a edição de logrotate.status fornece mais precisão sobre o que faz e o que não é rotacionado.


Este /var/lib/logrotate.statusarquivo não existe no Debian Squeeze.
Lashae

Tente / var / lib / logrotate / status. Não tenho certeza se isso é uma coisa debian / redhat, ou se eu coloquei "." onde eu deveria ter colocado "/".
Ben Aveling

2

Criou um script de shell para resolver o problema.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

Este script executará apenas o único arquivo de subconfiguração de logrotate encontrado em "/etc/logrotate.d", mas incluirá as configurações globais no arquivo de configuração global "/etc/logrotate.conf". Você também pode usar outras opções para testá-lo ...

Por exemplo...

  logrotate_one -d syslog
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.