为什么在 cron 运行时 free -h 的输出使用不同的数字分隔符?

joh*_*nes 2 cron locale

为什么内存工具的人类可读格式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
Run Code Online (Sandbox Code Playgroud)

但是当由 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
Run Code Online (Sandbox Code Playgroud)

我会称这是一个错误,因为它是一种非常出乎意料的行为。这是一个错误的公式。

Ste*_*itt 6

您的 shell 和 cronjob 中的语言环境设置不同。您可以通过locale在这两个设置中运行来进行检查,并且您可以通过设置适当的变量来更改您的 cronjob 的语言环境设置(LC_ALL如果您不需要微妙,则是锤子;locale(7)有关详细信息,请参阅)。