Por que a saída de free -h usa diferentes separadores de dígitos quando executada pelo cron?

2

Por que o formato legível da ferramenta de memória free imprime seus números usando pontos completos quando eu imprimo, mas quando é executado pelo crontab ele usa vírgulas?

Amostra:

free -h

            total       used       free     shared    buffers     cached
Mem:          3.7G       2.3G       1.4G       145M       675M       869M
-/+ buffers/cache:       839M       2.9G
Swap:         3.9G       385M       3.5G

Mas quando executado pelo crontab:

             total       used       free     shared    buffers     cached
Mem:          3,7G       2,3G       1,4G       145M       675M       869M
-/+ buffers/cache:       840M       2,9G
Swap:         3,9G       385M       3,5G

Eu chamaria isso de bug, já que é um comportamento muito inesperado. É uma fórmula para erros.

    
por Hermann Ingjaldsson 05.03.2017 / 19:02

2 respostas

6

Suas configurações de localidade são diferentes em seu shell e em seu cronjob. Você pode verificar executando locale em ambas as configurações, e você pode alterar as configurações de localidade do seu cronjob definindo as variáveis apropriadas ( LC_ALL é o martelo se você não precisa ser sutil; veja locale(7) para detalhes).

    
por 05.03.2017 / 19:20
1

As respostas que envolvem a configuração do locale estão corretas. Mas há outra solução: não use o sinalizador -h .

Quando você especifica free -h (ou, equivalentemente, free --human ), está solicitando um formato de saída legível, que não é necessariamente fácil de analisar por um computador. Se você usar o formato de saída padrão, ele será analisável e independente do código de idioma.

    
por 29.03.2017 / 21:15

Tags