메모리 도구의 사람이 읽을 수 있는 형식은 인쇄할 때 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
) 사람이 읽을 수 있는 출력 형식을 요청하는 것입니다. 이는 컴퓨터에서 구문 분석하기가 반드시 쉽지는 않습니다. 기본 출력 형식을 사용하면 구문 분석이 가능하고 로캘에 독립적입니다.