sort e uniq não estão sendo executados como esperado ao executar o cron

0

Abaixo está uma parte do script que dá saída adequada quando executado manualmente mas dá saída incorreta quando executado usando cron:

sort < file1.out | uniq -ic |sort -nr> file2.out

Quando executado na linha de comando, isso fornece uma contagem em que as linhas são caso ignorado agrupado, como:

73 /universal/webselfservice/pdf/r60.pdf

Ao executar pelo cron, as contagens são divididas quando o caso varia, por exemplo:

47 /universal/webselfservice/pdf/r60.pdf
26 /universal/webselfservice/pdf/R60.pdf

Como posso obter a saída cron para corresponder ao comportamento da linha de comando?

    
por user1643087 02.12.2015 / 16:50

1 resposta

3

A localidade usada no cron é diferente daquela no seu ambiente interativo. Um tem um agrupamento case-insensitive case e o outro não.

Isso significa que, interativamente, o primeiro sort coloca /universal/webselfservice/pdf/r60.pdf e /universal/webselfservice/pdf/R60.pdf adjacente, então uniq -i pode combiná-los. Mas na localidade usada pelo cron, eles não são adjacentes e são contados separadamente.

Existem dois meios simples para conseguir o que você quer:

  1. especifique sua localidade não sensível a maiúsculas e minúsculas como uma variável de ambiente em seu arquivo crontab ou
  2. adicione o sinal -f (ou --ignore-case ) ao primeiro sort .
por 02.12.2015 / 20:01