cronを実行するときにfree -hの出力で異なる数値区切り文字を使用するのはなぜですか?

cronを実行するときにfree -hの出力で異なる数値区切り文字を使用するのはなぜですか?

メモリツールの人が読める形式は、印刷時にfreeピリオドを使用して数字を印刷しますが、crontabで実行するとコンマを使用するのはなぜですか?

サンプル:

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

しかし、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

非常に予期しない動作であるため、これをバグと呼びます。これは間違った公式です。

答え1

シェルとcronjobのロケール設定が異なります。両方の設定で実行してこれを確認し、locale適切な変数を設定してcronjobのロケールを変更できます(LC_ALL微妙さが必要ない場合はハンマーを使用できます)。locale(7)詳細はこちら)。

答え2

設定に関する回答ロケールそうだねしかし、別の解決策があります。フラグを使用しないでください-h

指定した場合free -h(またはそれに対応するfree --human)、人間が読める出力形式を要求することです。これは、コンピュータで解析することは必ずしも容易ではありません。デフォルトの出力形式を使用すると、解析が可能でロケールに依存しません。

関連情報