Cron

為什麼在cron執行時free -h的輸出使用不同的數字分隔符?

  • March 29, 2017

為什麼記憶工具的人類可讀格式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)時,您要求的是人類可讀的輸出格式,這不一定容易被電腦解析。如果您使用預設輸出格式,它將是可解析的並且與語言環境無關。

引用自:https://unix.stackexchange.com/questions/349316