
60초마다 "free" 및 "top" 출력의 일부를 기록하기 위해 내 서버에 bash를 만들고 싶습니다. cron 작업을 설정하는 방법을 알고 있지만 "free" 및 "top"의 출력을 가져와 구문 분석하고 파일에 저장(추가)하는 방법을 모릅니다.
예를 들어 "top"을 실행하면 다음과 같이 해당 부분만 저장하고 싶습니다.
%Cpu: 18.2us,
그리고 "free"를 실행할 때 첫 번째 줄(Mem:)의 "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}'