awk에서 서버 환경 변수를 읽어오는 부분을 잘 몰라서 좀 헤맸다.

콘트롤러 서버에서 수집이 되어야 하는 서버군에 cpu 정보를 읽어오라는 ad-hoc 명령을 내리고 싶을 때 hostname도 같이 읽어와야 데이터 수집을 쉽게 할 수 있다. 


cpu 정보를 /proc/stat에서 읽어와서 awk에서 cpu 정보와 $HOSTNAME을 출력할 것이다.

awk안에 환경변수 HOSTNAME을 사용할 수 있는  두가지 방법이 있다.


1. { } 안에서 $HOSTNAME 을 사용할 때 "'" 으로 감싼다. (더블 쿼테이션 + 싱글 쿼테이션 + 더블 쿼테이션)


grep 'cpu ' /proc/stat | awk ' {usage=($2+$4)*100/($2+$4+$5)} END {print "'"$HOSTNAME "'" usage}'



2. { } 바깥에서 변수를 정의해서 사용하낟. 


 grep 'cpu ' /proc/stat | awk ' {usage=($2+$4)*100/($2+$4+$5)} END {print HOST " " usage}' HOST=$HOSTNAME


Posted by '김용환'
,