É 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?

Vladimir
fonte
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

Pilcrow
fonte
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.

sandover
fonte
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.

trisweb
fonte
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

vivekv
fonte
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

Allen Hancock
fonte
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
}
wangc
fonte
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.

Ben Aveling
fonte
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
Anthony
fonte