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

쉘과 cronjob의 로케일 설정이 다릅니다. 두 설정 모두에서 실행하여 이를 확인할 수 locale있으며 적절한 변수를 설정하여 cronjob의 로케일을 변경할 수 있습니다( LC_ALL미묘함이 필요하지 않으면 해머를 사용할 수 있습니다.locale(7)더 알아보기).

답변2

설정 관련 답변로케일맞다. 하지만 또 다른 해결책이 있습니다. 플래그를 사용하지 않는 것입니다 -h.

지정하면 free -h(또는 이에 상응하는 free --human) 사람이 읽을 수 있는 출력 형식을 요청하는 것입니다. 이는 컴퓨터에서 구문 분석하기가 반드시 쉽지는 않습니다. 기본 출력 형식을 사용하면 구문 분석이 가능하고 로캘에 독립적입니다.

관련 정보