Language/Bash
리눅스 모니터링 스크립트
junsuyoun
2022. 11. 21. 15:02
728x90
반응형
리눅스 환경에서 아래 이미지와 같은 shell 스크립트를 통한 텍스트 모니터링 유틸리티를 만들어 보겠습니다.
스크립트 레이아웃
echo 명령를 통해 레이아웃을 구분할 수 있습니다.
[root@d86a1cc708f1 ~]# line="###############################################################"
[root@d86a1cc708f1 ~]# echo "$line"
###############################################################
[root@d86a1cc708f1 ~]# line="---------------------------------------------------------------"
[root@d86a1cc708f1 ~]# echo "$line"
---------------------------------------------------------------
[root@d86a1cc708f1 ~]# line="***************************************************************"
[root@d86a1cc708f1 ~]# echo "$line"
***************************************************************
좀 더 유연하게 만들고 싶다면, printf 명령어를 활용 합니다.
[root@d86a1cc708f1 ~]# line="###############################################################"
[root@d86a1cc708f1 ~]# printf %s"\n" $line
###############################################################
[root@d86a1cc708f1 ~]# line="---------------------------------------------------------------"
[root@d86a1cc708f1 ~]# printf "%s\n" $line
---------------------------------------------------------------
[root@d86a1cc708f1 ~]# printf "***************************************************************\n" $line
***************************************************************
스크립트 내용
고정 되는 값 표현 vs 변경 되는 값 표현
- echo 명령어를 통해 문자열 출력은 "문자" - 쌍따옴표로 구분 (고정 되는 값)
- echo 명령어를 통해 명령 결과 출력은 `명령어` - 으로 표현 (변경 되는 값)
[root@d86a1cc708f1 /]# echo "today - "`date`
today - Mon Sep 26 08:17:11 UTC 2022
[root@d86a1cc708f1 /]# echo "today - "`date`
today - Mon Sep 26 08:17:14 UTC 2022
[root@d86a1cc708f1 /]# echo "today - "`date`
today - Mon Sep 26 08:17:17 UTC 2022
간단한 예제
[root@d86a1cc708f1 mon_shell]# cat tistory.sh
echo "################################################"
echo "today - "`date`
echo "################################################"
[root@d86a1cc708f1 mon_shell]# sh tistory.sh
################################################
today - Mon Sep 26 08:18:47 UTC 2022
################################################
스크립트 실행
스크립트 결과를 어떻게 처리할꺼냐?
- 실시간 화면 출력
- 실시간 리다이렉션(로그 기록)
실시간 화면 출력
$ while true
do
<COMMAND>
clear
sleep 1
done
실시간 리다이렉션
$ while true
do
<COMMAND>
sleep 1
clear
done > <FILE NAME>
## 백그라운드 실행
$ while true
do
<COMMAND>
sleep 1
clear
done > <FILE NAME> &
## 터미널이 끊기더라도 백그라운드로 동작 시키기
$ nohup while true
do
<COMMAND>
sleep 1
clear
done > <FILE NAME> &
간단한 예제
특정 커맨드의 리소스 사용량을 화면에 실시간으로 출력하도록 하는 스크립트 작성
monitor_cmd=cub_server
monitor_interval=1
while true
do
echo "TIME: "`date`
echo "USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND"
ps -aux |grep "$monitor_cmd" |grep -v grep
sleep "$monitor_interval"
clear
done
특정 커맨드의 리소스 사용량을 파일로 기록하고 파일로 확인하기
monitor_log="top_proc.log"
monitor_cmd=cub_server
monitor_interval=1
while true
do
echo "TIME: "`date`
echo "USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND"
ps -aux |grep "$monitor_cmd" |grep -v grep
sleep "$monitor_interval"
clear
done > "$monitor_log" &
tail -f "$monitor_log"
728x90
반응형