Cron
為什麼在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
我將此稱為錯誤,因為它是一種非常出乎意料的行為。這是一個錯誤的公式。
您的 shell 和 cronjob 中的語言環境設置不同。您可以通過
locale
在這兩種設置中執行來檢查,並且可以通過設置適當的變數來更改 cronjob 的語言環境設置(LC_ALL
如果您不需要很微妙,那就是錘子;有關詳細資訊,請參閱locale(7)
)。
涉及設置語言環境的答案是正確的。但還有另一種解決方案:不要使用
-h
標誌。當您指定
free -h
(或等效地,free --human
)時,您要求的是人類可讀的輸出格式,這不一定容易被電腦解析。如果您使用預設輸出格式,它將是可解析的並且與語言環境無關。