为什么当我打印它时,内存工具的人类可读格式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
)时,您要求的是人类可读的输出格式,这不一定容易被计算机解析。如果您使用默认输出格式,它将是可解析的并且与区域设置无关。