Upstart로 오래 도는 프로세스 관리하기
· 약 7분
오래 돌아야 하는 서버 또는 워커를 어떻게 관리하고 계신가요? 설마 이렇게 하고 계신가요?
- screen이나 tmux 안에 띄워놓고 잊어버리기
- nohup으로 실행해두고 잊어버리기
- 프로세스가 꺼졌는지 한참동안 모르고 있다가 당황하기
- 시스템 재부팅 될 때마다 헬을 만나기
우분투에서 기본으로 제공되는 Upstart를 사용하면,
- 시스템 부팅 시에 서비스 띄우기
- 다른 서비스가 시작된 후에 서비스 띄우기
- 프로세스가 오류로 꺼지면 자동으로 다시 띄우기
- stdout/stderr를 로그 파일에 기록하기
- 로그 파일이 커지면 쪼개기
와 같은 기능을 어렵지 않게 사용할 수 있습니다.
설정 파일 설치하기
Upstart 서비스 설정 파일은 /etc/init/
에 모여있습니다. 따라서 /etc/init/
디렉토리에 서비스명.conf
파일을 만들어 넣으면 됩니다.
심볼릭 링크로 설치하기
/etc/init/
에는 시스템 서비스의 설정 파일도 모두 들어있기 때문에, 조금 더 관리를 편하게 하려면 별도의 디렉토리에 서비스 설정 파일을 모아두는 것도 좋은 선택입니다. 그러려면 /etc/init
에 심볼릭 링크를 걸어야 합니다.
sudo ln -s /home/ubuntu/something.conf /etc/init/
주의! /etc/init/
에 직접 들어있지 않고 심볼릭 링크로 들어있는 파일이 수정될 때는 Upstart가 변화를 감지하지 못합니다. 따라서 다음 명령어로 설정 파일을 다시 불러오게 해야 합니다.
sudo initctl reload-configuration
서비스 관리
설정 파일 작성법을 알아보기 전에 서비스 관리하는 방법을 먼저 알아둡시다.
- 시작:
sudo start 서비스명
- 중단:
sudo stop 서비스명
- 재시작:
sudo restart 서비스명
(주의: 서비스 설정 파일을 다시 읽어오지 않습니다. 설정 파일이 바뀌었으면 stop 후 start할 것) - 점잖은 재시작:
sudo reload 서비스명
(정확히는, 프로세스에HUP
시그널을 보냅니다)