강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

3. 쉘프로그램 실행시 발생되는 메시지 처리하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

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


Mar 26 17:27:39 command root:  Apache Web Server Restarted...

 

이상과 같이 logger 설명을 마치면서 한말씀 드립니다. 설명을 보신 바와 같이 logger 주된 용도는 주로 쉘프로그램이나 C같은 프로그램내에서 특정 상황이나 조건에 맞는 상황이 발생하였을 경우에 그에 대한 로그를 시스템로그파일(/var/log/messages) 기록하기 위한 것입니다. 

 

눈치 빠르신 분들이라면 ~~!!”하고 여러가지 생각되는 것이 있을 것입니다. , 쉘프로그램으로 시스템관리 프로그램을 개발하거나 간단한 관리 프로그램등을 만들 때에 위와 같이 활용하면 매우, 정말, 쿨하게 유용하겠구나 라고 말입니다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,157 명
  • 현재 강좌수 :  36,515 개
  • 현재 접속자 :  238 명