쉘 스크립트(Crontab): 메모리 인쇄를 텍스트 파일로 저장하면 항상 공백이 표시됩니다.

쉘 스크립트(Crontab): 메모리 인쇄를 텍스트 파일로 저장하면 항상 공백이 표시됩니다.

내 CentOS에서 CPU USAGE 및 FREE MEMORY 출력 번호를 텍스트 파일로 인쇄하려고 합니다. 하지만 터미널에 입력하면 모두 괜찮습니다. 그러나 MEMORY 출력을 통해 실행되면 crontab항상 비어 있습니다.

터미널에 수동으로 입력:

# echo CPU: `top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'`, RAM: `awk '/^Mem/ {print $4}' <(free -m)` >> ~/stats.txt
# cat ~/stats.txt
CPU: 3.8, RAM: 1307

Crontab에서 동일한 명령:

*/10 * * * * echo CPU: `top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'`, RAM: `awk '/^Mem/ {print $4}' <(free -m)` >> ~/stats.txt

그런 다음 텍스트 파일 내부에서 다음을 수행합니다.

# cat ~/stats.txt
CPU: 3.4, RAM: 
CPU: 4.1, RAM: 
CPU: 3.9, RAM: 

왜?항상 공백으로 출력해주세요.

답변1

왜냐하면 dash이런 종류의 bashism을 이해하지 못하기 때문입니다.

<(free -m)

대신 다음을 사용하세요.

free -m | awk '/^Mem/ {print $4}'

관련 정보