github twitter email
runit
Dec 4, 2016
One minute read

runit이란, 유닉스 크로스 플랫폼에서 작동하는 서비스 관리 프로그램 입니다.
비슷한 종류로는 init, launchdm, systemd 등이 있습니다.

구동되는 플랫폼은 아래와 같지요.

  • GNU/Linux
  • *BSD
  • MacOSX
  • Solaris

서비스들이 runsv 의 child process로 실행이 되며, 관리를 받게 됩니다.
(runsv : 서비스 데몬의 신호, 서비스 컨트롤 및 관리를 담당.)
또한 sv를 이용하여 모니터링 되고 있는 서비스들을 관리 할 수 있습니다.

저는 runit을 1번 프로세스로 사용하지 않고(systemd를 사용하지요) 특정 프로세스의 감시 툴로써 nginx를 모니터링 하고 auto restart 처리를 할 예정입니다.
runsvdir은 service 디렉토리를 감시하고 해당 프로세스를 관리합니다.

자 설치해봅시다 :-)

기본 조건 : Centos7, RPM설치

# quick install
curl -s https://packagecloud.io/install/repositories/imeyer/runit/script.rpm.sh | bash
yum install runit -y

설정

nginx run 파일 생성

runsvdir이 해당 프로세스를 run파일을 실행시키는 것으로 처리합니다.
제가 사용하는 run 파일을 보시지요.

cat /usr/local/nginx/run

#!/bin/sh
exec /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 2>&1

경로 연결

cd /etc/service
ln -s /usr/local/nginx .

확인

프로세스가 정상적으로 구동되었음이 확인 됩니다.

pstree | grep runsv
  |-runsvdir---runsv---nginx---13*[nginx]

sv 명령어

man 페이지를 보면 자세히 나옵니다만, 우선 대표적인 옵션을 봅시다.

  • status : 서비스의 현재 상태를 보여줍니다.
  • up (start) : 서비스를 구동시킵니다.
  • down (stop) : 서비스의 TERM 신호와 CONT 신호를 보냅니다.
  • reload : HUP

그럼 이만 :-)

참고

공식홈페이지
Wikipedia



Back to posts