3. 쉘프로그램 실행시 발생되는 메시지 처리하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,336 조회
- 0 추천
- 목록
본문
3. 쉘프로그램 실행시 발생되는 메시지 처리하기
쉘프로그램 내에서 특정 이벤트 발생시 로그기록을 위한 logger 실무사용법
logger는 로그메시지를 시스템로그파일(/var/log/messages등)에 기록할 수 있는 로그기록기 입니다. 즉, logger명령어를 사용하여 원하는 로그를 기록하면 지정된 메시지가 시간표시와 함께 시스템로그파일(/var/log/messages)에 기록됩니다. 즉, 쉘프로그램이나 특정 프로그램 내에서 원하는 위치에 logger명령어를 넣어 둠으로서 특정 조건에 맞는 상황이 발생하였을 경우에 지정된 메시지를 시스템 로그파일에 기록하도록 하는 용도로 사용됩니다.
사용형식 : logger [-is] [-f file] [-p pri] [-t tag] [메시지 ...]
먼저 간단한 예를 보도록 하겠습니다. 아래의 예와 같이 간단히 “logger SystemCheck”라고 하면 /var/log/messages파일에 지정된 “SystemCheck”라는 문자열이 기록됩니다.
[root@command root]# logger SystemCheck [root@command root]# |
다음은 위의 명령어의 결과 /var/log/messages에 기록된 내용을 나타낸 것입니다.
[root@command root]# tail -f /var/log/messages
Mar 26 16:03:21 command root: SystemCheck
|
이번에는 logger명령어를 이용하여 특정문장을 시스템로그파일에 기록해 보겠습니다. 즉, 아래의 예와 같이 “system logger testing....”이라는 문장을 logger명령어로 실행하면 /var/log/messages파일에 지정된 로그문장이 그대로 기록됩니다.
[root@command root]# logger "system logger testing...." [root@command root]# |
아래의 예는 위의 logger명령어에 의해 기록된 로그문장을 확인한 것입니다.
[root@command
root]# tail -f /var/log/messages Mar 26 16:04:06 command root:
system logger testing.... |
쉘프로그램내에서 사용되는 로그기록기 logger의 실사용예
다음은 logger명령어가 쉘프로그램 내에서 실제로 어떻게 사용이 되는가를 보여드리기 위하여 간단히 만든 쉘프로그램입니다.
즉, 이 쉘프로그램은 아파치웹서버가 다운되었을 경우에 자동으로 재시작시켜주는 것으로서 재시작을 시킨 다음에는 " Apache Web Server Restarted..."라는 메시지를 /var/log/messages에 기록하게 됩니다. 이때 이 메시지를 기록하도록 하기 위하여 logger명령문을 이 쉘프로그램내에서 사용한 것입니다.
아래는 이 쉘프로그램의 내용입니다. 아래의 쉘프로그램은 while문을 사용하여 무한루프를 돌게하고 5초에 한번씩 아파치의 데몬갯수를 체크하여 아파치프로세스갯수가 1개이하일 경우에 아파치웹서버가 죽었다고 가정하고 아파치를 자동 재실행하는 간단한 쉘프로그램입니다.
[root@command root]# cat logger.sh #!/bin/bash
while (:) do httpdcount=`ps -ef | grep httpd | wc -l`
if [ $httpdcount -le "1" ]
then
echo "Apache is restarted." echo $httpdcount /etc/rc.d/init.d/httpd restart logger " Apache Web Server Restarted..."
fi sleep 5 done [root@command root]# |
위의 쉘프로그램내의 logger행을 보시기 바랍니다. 즉, 아파치가 다운되었을 경우에 “/etc/rc.d/init.d/httpd restart”라는 아파치 재시작명령어가 수행된 후에 logger명령으로 /var/log/messages(시스템 로그파일)에 “Apache Web Server Restarted...”라는 메시지를 남기게 됩니다. 그리고 APACHE를 자동재시작시킵니다. 자, 그럼 이 쉘프로그램을 아래와 같이 백그라운드로 실행해 두겠습니다.
[root@command root]# ./logger.sh & [1] 2324 [root@command root]# |
그리고 killall명령어로 현재 실행되어 있는 아파치프로세스(httpd)를 모두 죽였습니다. 아파치웹서버가 다운되는 상황을 연출하기 위한 것입니다.
[root@command root]# killall httpd [root@command root]# |
위와 같이 아파치웹서버가 다운되었을 경우에 위에서 실행해둔 프로세스(logger.sh)에 의해서 아파치를 자동 재시작합니다.
그리고 /var/log/messages파일에는 아래와 같이 위의 쉘프로그램내에서 지정해둔 “Apache Web Server Restarted...”라는 메시지가 기록됩니다. 아래는 /var/log/messages 파일에 기록된 메시지를 확인한 것입니다.
[root@command log]# tail -f messages
|
이상과 같이 logger의 설명을 마치면서 한말씀 드립니다. 설명을 보신 바와 같이 logger의 주된 용도는 주로 쉘프로그램이나 C같은 프로그램내에서 특정 상황이나 조건에 맞는 상황이 발생하였을 경우에 그에 대한 로그를 시스템로그파일(/var/log/messages)에 기록하기 위한 것입니다.
눈치 빠르신 분들이라면 “아~~하!!”하고 여러가지 생각되는 것이 있을 것입니다. 즉, 쉘프로그램으로 시스템관리 프로그램을 개발하거나 간단한 관리 프로그램등을 만들 때에 위와 같이 활용하면 매우, 정말, 쿨하게 유용하겠구나 라고 말입니다.
관련자료
-
이전
-
다음