O meu comando do cron é bom? [fechadas]

0

Eu tento limpar os logs uma vez por semana com este comando cron :

@weekly find /var/log/ \( -iregex ".*\.[2-20]+" -o -iname "*.gz" \) -exec rm {} \; 2>&1

Isso é bom?

    
por c.bruno 09.05.2018 / 23:00

1 resposta

2

[2-20]+ não é a maneira correta de testar se um número está no intervalo de 2 a 20 . Os colchetes em uma expressão regular correspondem a um único caractere que corresponde a qualquer um dos caracteres dentro dele. E - no conjunto de caracteres é usado para especificar um intervalo de caracteres (por exemplo, 2-9 ou a-z ); o intervalo 2-2 é igual a apenas 2 . Portanto, [2-20]+ é equivalente a [20]+ , corresponde a qualquer sequência dos caracteres 2 e 0 , como 2 , 20 , 02 , 2200 , etc.

Deve ser ([2-9]|1[0-9]|20) . Isso corresponde a um único dígito de 2 a 9 , 1 seguido de 0 a 9 ou 20 .

Se você estiver usando o GNU find , você pode usar o operador -delete em vez de -exec rm {} \; .

E não há necessidade de usar 2>&1 se você não estiver redirecionando a saída padrão. Por padrão, a saída padrão e o erro padrão são enviados como mensagem para o usuário.

@weekly find /var/log/ \( -iregex '.*\.([2-9]|1[0-9]|20)' -o -iname "*.gz" \) -delete
    
por 09.05.2018 / 23:34

Tags