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

쉘프로그래밍강좌093: 아파치웹서버가 죽었을 경우에 자동 재실행하는 쉘프로그램

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

쉘프로그래밍강좌093: 아파치웹서버가 죽었을 경우에 자동 재실행하는 쉘프로그램

 

 

 

 

아래 쉘프로그램은 이 웹사이트(www.linux.co.kr)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

 

  systemctl restart httpd

 

fi

 

sleep 10

 

done

 

 

 

 

이 프로그램의 자세한 설명은 이 웹사이트(www.linux.co.kr) while 강좌편을  참조하시기 바랍니다.

 

 

 

 여기서는 nohup명령어로 이 쉘프로그램을 실행시켜 아파치프로세스를 재시작하는 일종의 데몬으로 작동하도록 할 것입니다.

 

 

 

 

 

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

 

 

 

 

 

[root@RockyLinux01 test]# nohup ./apachemon.sh &

[3] 237778

[root@RockyLinux01 test]#

 

 

 

 

위와 같이 nohup으로 이 쉘프로그램을 실행하였을 경우에는 로그아웃을 하더라도 프로그램은 종료되지 않고 계속 실행이 됩니다.

 

 

 

 따라서 아파치웹서버가 다운되었을 경우에 자동으로 재시작하도록 작동될 것입니다.

 

 

 

 

 

이제 로그아웃 한 후에 다시 로그인하여 이 프로세스가 종료되지 않고 그대로 실행이 되어있는가를 확인해 보겠습니다.

 

 

 

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

 

 

 

 

 

[root@RockyLinux01 test]# ps -ef | grep apachemon

root      237778    1949  0 16:00 pts/0    00:00:00 /bin/bash ./apachemon.sh

root      264928    1949  0 16:01 pts/0    00:00:00 grep --color=auto apachemon

[root@RockyLinux01 test]#

 

 

 

 

위의 예로서 여러분들께서는 간단한 쉘프로그램으로 꼭 필요한 시스템관리 데몬들을 자체적으로 만들 수 있다는 것을 아셨을 것입니다.

 

 

 

 , 위의 쉘프로그램과 nohup명령어를 이용한다면 아파치웹서버뿐아니라 MySQL FTP데몬등도 자동재시작할 수 있는 간단한 데몬들을 만들 수 있다는 것을 알 수 있습니다.

 

 

 

 

 

이번 강좌의 내용을  정리하여 말씀 드린다면 다음과 같습니다.

 

 

 

 

 

일반적인 프로세스는 부모프로세스가 종료되면 자식프로세스도 자동으로 종료되어야 합니다.

 

 

 

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

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  98 명