60초마다 "무료" 및 "상위" 출력의 일부를 기록하는 bash를 서버에 만들고 싶습니다. cron 작업을 설정하는 방법은 알고 있지만 "free" 및 "top" 출력을 가져와 구문 분석하고 파일에 저장(추가)하는 방법은 모릅니다.
예를 들어 "top"을 실행하면 다음과 같은 부분만 저장하고 싶습니다.
%CPU: 18.2us,
"free"를 실행할 때 첫 번째 행(메모리: )의 "available" 열만 저장하고 싶습니다.
그렇다면 Centos 7에서 bash를 어떻게 실행합니까?
답변1
1분마다 모니터링하고 싶다면 현재 사용량 대신 CPU의 부하 평균을 사용하는 것이 좋습니다.
cat /proc/loadavg | awk '{print "Load last minute:", $1}'
이 줄은 마지막 순간의 평균 CPU 사용량을 제공합니다. 이는 사용된 CPU 비율보다 더 정확합니다. 왜냐하면 100%의 급증이 있을 수 있고 평균 사용률이 훨씬 낮더라도 이를 저장할 수 있기 때문입니다.
답변2
사용 awk
:
top -n 1 | awk '/^%Cpu\(s\)/ {print "%Cpu(s)", $2, "us"}'
free | awk '/^Mem:/ {print $7}'