为什么 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

您的 shell 和 cronjob 中的区域设置是不同的。您可以通过locale在这两个设置中运行来进行检查,并且可以通过设置适当的变量来更改 cronjob 的区域设置(LC_ALL如果您不需要微妙,则可以使用锤子;请参阅locale(7)了解详情)。

答案2

涉及设置的答案语言环境是正确的。但还有另一个解决方案:不要使用该-h标志。

当您指定free -h(或等效地,free --human)时,您要求的是人类可读的输出格式,这不一定容易被计算机解析。如果您使用默认输出格式,它将是可解析的并且与区域设置无关。

相关内容