メモリツールの人が読める形式は、印刷時に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
)、人間が読める出力形式を要求することです。これは、コンピュータで解析することは必ずしも容易ではありません。デフォルトの出力形式を使用すると、解析が可能でロケールに依存しません。