%3A%20%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EC%9D%B8%EC%87%84%EB%A5%BC%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EC%A0%80%EC%9E%A5%ED%95%98%EB%A9%B4%20%ED%95%AD%EC%83%81%20%EA%B3%B5%EB%B0%B1%EC%9D%B4%20%ED%91%9C%EC%8B%9C%EB%90%A9%EB%8B%88%EB%8B%A4..png)
내 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}'