-
Notifications
You must be signed in to change notification settings - Fork 2
2016 12 09 Jenkins에서 백그라운드 데몬 실행
Jamie edited this page Dec 9, 2016
·
1 revision
작년 팀 내 누군가의 아이디어로부터 얻은 것이지만 저에게는 지금까지 매우 유용한 팁이 있습니다. 바로 crontab에서 할 일을 Jenkins를 이용해 하는 것이지요. 이렇게 하면 자동으로 로그가 남고, history 관리도 용이할 뿐더러, 실패 시 노티도 받는 등 각족 플러그인도 사용할 수 있습니다. 저는 심지어 데몬 프로세스를 재시작 하는 것도 Jenkins를 통해 하기에 이르렀습니다.
그런데 한가지 문제가 있었습니다. Jenkins는 빌드(원래는 CI 서버이니 빌드가 맞죠..)에서 생성된 subprocess들은 빌드 종료 시 찾아서 일일이 죽입니다. ProcessTreeKiller라는 걸 만들어서까지 말이죠. 이러니 데몬을 아무리 nohup으로 띄워도 빌드 종료와 함께 다 죽어버렸습니다. ㅠ.ㅠ
그래서 Jenkins 측에서는 Spawning processes from build를 통해 데몬 프로세스를 빌드를 종료한 후에도 살아남도록 하는 방법을 적어 놨더군요. 그 중에서 비교적 쉽고 저에게 맞는 방법이 바로 daemonize라는 툴을 통해 아래와 같이 실행하는 방법입니다.
daemonize -E BUILD_ID=dontKillMe /path/to/your/command
여기서 BUILD_ID 환경 변수를 원래의 Jenkins 내에서의 BUILD_ID가 아닌 다른 값으로 바꿔주는 꼼수(?)를 써서 ProcessTreeKiller의 학살(?)로부터 벗어나는 것이었습니다. ^^;