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

레벨266-2 : 아파치웹서버가 죽었을 경우에 자동 재실행하는 쉘프로그램

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

레벨266-2 : 아파치웹서버가 죽었을 경우에 자동 재실행하는 쉘프로그램

 

아래 쉘프로그램은 책의 while명령어편에서 설명 드렸던 간단한 쉘프로그램으로서 nohup명령문의 실무적용 예를 보이기 위하여 직접 만든 것입니다.

 

, 아래의 쉘프로그램은 while문을 사용하여 무한루프를 돌게 하고 10초에 한번씩 아파치의 데몬갯수를 체크하여 아파치프로세스갯수가 1개가 하일 경우에 아파치웹서버가 죽었다고 판단하고 아파치를 자동 재실행하는 간단한 쉘프로그램입니다.

 

#!/bin/bash

 

while (:)

do

 

httpdcount=`ps -ef | grep httpd | wc -l`

 

if [ $httpdcount -le "1" ]

 

then

 

  echo "Apache is restarted."

  echo $httpdcount

 

  /usr/local/apache/bin/apachectl restart

 

fi

 

sleep 10

 

done

 

프로그램의 자세한 설명은 책의 while명령어편을 참조하시기 바랍니다. 여기서는 nohup명령어로 쉘프로그램을 실행시켜 아파치프로세스를 재시작하는 일종의 데몬으로 작동하도록 것입니다.

 

위의 파일을 생성하였을 경우에는 nohup라는 명령어로 다음과 같이 실행시킵니다.

 

[root@file root]# nohup ./apachemon.sh &

[1] 4354

[root@file root]#

 

위와 같이 nohup으로 쉘프로그램을 실행하였을 경우에는 로그아웃을 하더라도 프로그램은 종료되지 않고 계속 실행이 됩니다. 따라서 아파치웹서버가 다운되었을 경우에 자동으로 재시작하도록 작동될 것입니다.

 

이제 로그아웃 후에 다시 로그인하여 프로세스가 종료되지 않고 그대로 실행이 되어있는가를 확인해 보겠습니다.  , 아래의 예는 터미널에서 로그아웃 후에 다시 로그인하여 ps명령어로 앞에서 nohup으로 실행시켜 두었던 apachemon.sh라는 프로세스가 계속 실행이 되어있는가를 확인한 것입니다.

 

[root@file root]# ps -ef | grep apachemon.sh

root      4354  1964  1 10:33 pts/0    00:00:00 /bin/bash /root/apachemon.sh

root      4927  1964  0 10:33 pts/0    00:00:00 grep apachemon.sh

root      4929  4354  0 10:33 pts/0    00:00:00 /bin/bash /root/apachemon.sh

[root@file root]#

 

위의 예로서 여러분들께서는 간단한 쉘프로그램으로 필요한 시스템관리 데몬들을 자체적으로 만들 있다는 것을 아셨을 것입니다. , 위의 쉘프로그램과 nohup명령어를 이용한다면 아파치웹서버뿐아니라 MySQL FTP데몬등도 자동재시작할 있는 간단한 데몬들을 만들 있다는 것을 있습니다. 

 

이번 장의 설명을 정리하여 말씀 드린다면 다음과 같습니다.

 

일반적인 프로세스는 부모프로세스가 종료되면 자식프로세스도 자동으로 종료되어야 합니다. 하지만, nohup으로 실행된 프로세스들은 부모프로세스가 종료되더라도(죽더라도) 자식프로세스는 계속 작동할 있도록 백그라운드모드에서 프로세스가 실행되도록 합니다.

 

그리고 프로세스를 실행시킨 사용자가 로그아웃(logout)하더라도 실행시켜둔 자식프로세스는 죽지 않고 계속 실행됩니다.

 

이제, 적용은 여러분들의 몫이므로 필자의 역할은 다한 같습니다. 부디 능력 있는 서버관리자가 되시기를….

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  74 명