Logrotate: como acessar o arquivo de saída no póstrotate

15

Giro Nginxlogs diariamente (com dateext). Após a rotação, desejo analisar o arquivo do dia que acabou de passar e compilar um email com o número de erros retornados pelo servidor Nginx.

Como posso acessar o arquivo de saída na seção postrotate / endscript de logrotate?

ibz
fonte
Você pode elaborar mais?
Khaled Khaled
Feito. Desculpe, pensei que estava claro o suficiente. :)
ibz

Respostas:

4

Não conheço nenhuma variável que você possa usar, se é isso que procura. No entanto, imediatamente após a rotação do log, você deve saber exatamente o nome para o qual o arquivo foi rotacionado, com base na configuração definida para a rotação ( /var/log/somefile.1ou algo semelhante).

Talvez seja mais fácil responder se você descreveu o problema real que está tentando resolver?

marca
fonte
Eu pensei que o problema é irrelevante. Explicou em mais detalhes agora. Sim, posso apenas usar a data para obter o nome do arquivo, mas esperava poder obtê-lo através de alguma variável ou algo assim, o que faria mais sentido.
ibz 2/11/10
3
Parece que o larsks atingiu exatamente o que você deseja. $ 1 é a variável que você está procurando.
marque
17

Se você não estiver usando a diretiva "sharedscripts", seu script pós-rotação receberá, como $ 1, o arquivo que acionou a rotação do log. Isso pode ajudar se você estiver tentando usar um script genérico com várias estrofes de rotação de log. Ou seja, dado algo como isto:

/var/log/sample1.log /var/log/sample[23].log {
  ..config...
}

Se qualquer arquivo correspondente precisar ser girado, seu script será chamado com $ 1 definido como "/var/log/sample1.log", "/var/log/sample2.log" ou "/var/log/sample3.log " como apropriado. Você pode então acrescentar ".1" para encontrar o arquivo que acabou de ser rotacionado.

Se você usar a opção "sharedscripts", seu script será chamado com $ 1 definido como "/var/log/sample1.log /var/log/sample[23✨.log" (que ajudará a identificar uma estrofe específica, mas não é o arquivo exato).

Espero que isso lhe dê um lugar para começar. Observe que isso funcionará apenas para logrotate> v3.7.5.

larsks
fonte
1
Handy. Na verdade, os scripts pré e pós-rotação parecem receber o nome do arquivo girado como $ 1, exatamente o que a pergunta solicita.
marque
1
@ Marcos o script recebe o nome da entrada de arquivo, não a saída de arquivo
kbolino