컴퓨터에서는 데몬(리눅스), 서비스(윈도우)와 같은 백그라운드 프로세스(Background process)를 일반적인 포그라운드 프로세스(Foreground process)와 다르게 관리한다. 일반적인 프로세스는 쉘에서 직접 실행시킬 수 있지만, 백그라운드 프로세스는 백그라운드 프로세스 관리자를 통해 실행해야 한다.
리눅스에서는 systemctl, service 등 다양한 서비스 관리 프로그램을 이용하고, 윈도우에서는 "Windows 서비스"를 이용해서 서비스를 관리한다. 이 포스트에서는 리눅스의 여러가지 서비스 관리 프로그램에 대해 알아보려고 한다.
리눅스에서 사용하는 데몬 관리 프로그램이다.
맥OS에서 사용하는 데몬 관리 프로그램이다.
brew를 통해 설치한 프로그램을 launchctl을 통해 관리하기 위해서는 /Library/LaunchDaemons/에 mysql의 .plist 파일을 등록해야 한다.
초창기 리눅스에서 사용하는 데몬 관리 프로그램이다.
특별히 아파치 웹 서버만을 관리하는 프로그램이다.
맥OS의 패키지 관리 프로그램인 homebrew를 통해 설치한 프로그램을 관리하는 프로그램.
brew를 통해 설치했다고 해서 꼭 brew services를 이용해야 하는 것은 아니다. 앞서 알아봤듯이 launchctl에 등록해서 사용할 수 있다.
리눅스의 데몬 관리 프로그램은 주로 컨트롤러-데몬 쌍으로 이루어진 경우가 많다. 데몬과 컨트롤러의 관계를 시각적으로 나타내면 다음과 같다.
유저 - 컨트롤러(포그라운드) - 데몬들을 컨트롤하는 데몬(백그라운드) - 일반적인 데몬
컨트롤러와 데몬 사이에 데몬 관리 데몬을 둔 이유는 컨트롤러가 일반적인 포그라운드 프로세스이기 때문에 항상 작동하는 데몬을 관리하기에는 적절하지 않기 때문이다. 그렇기 때문에 항상 작동하는 데몬을 컨트롤러와 데몬 사이에 넣어 데몬들을 관리하도록 한 것이다.
포그라운드 프로그램 없이는 실행될 수 없는 데몬의 단점과 항상 데몬을 관리할 수 없는 포그라운드 프로그램의 단점을 컨트롤러-데몬 쌍으로 극복하는 것이다.