[Linux] 백그라운드 프로세스(데몬) 관리

Shadis·2023년 10월 1일

Linux

목록 보기
3/9

리눅스 데몬 관리

컴퓨터에서는 데몬(리눅스), 서비스(윈도우)와 같은 백그라운드 프로세스(Background process)를 일반적인 포그라운드 프로세스(Foreground process)와 다르게 관리한다. 일반적인 프로세스는 쉘에서 직접 실행시킬 수 있지만, 백그라운드 프로세스는 백그라운드 프로세스 관리자를 통해 실행해야 한다.

리눅스에서는 systemctl, service 등 다양한 서비스 관리 프로그램을 이용하고, 윈도우에서는 "Windows 서비스"를 이용해서 서비스를 관리한다. 이 포스트에서는 리눅스의 여러가지 서비스 관리 프로그램에 대해 알아보려고 한다.

systemctl - systemd

리눅스에서 사용하는 데몬 관리 프로그램이다.

launchctl - launchd

맥OS에서 사용하는 데몬 관리 프로그램이다.
brew를 통해 설치한 프로그램을 launchctl을 통해 관리하기 위해서는 /Library/LaunchDaemons/에 mysql의 .plist 파일을 등록해야 한다.

service

초창기 리눅스에서 사용하는 데몬 관리 프로그램이다.

apachectl - httpd

특별히 아파치 웹 서버만을 관리하는 프로그램이다.

brew services

맥OS의 패키지 관리 프로그램인 homebrew를 통해 설치한 프로그램을 관리하는 프로그램.
brew를 통해 설치했다고 해서 꼭 brew services를 이용해야 하는 것은 아니다. 앞서 알아봤듯이 launchctl에 등록해서 사용할 수 있다.

컨트롤러-데몬 쌍으로 이루어진 이유

리눅스의 데몬 관리 프로그램은 주로 컨트롤러-데몬 쌍으로 이루어진 경우가 많다. 데몬과 컨트롤러의 관계를 시각적으로 나타내면 다음과 같다.

유저 - 컨트롤러(포그라운드) - 데몬들을 컨트롤하는 데몬(백그라운드) - 일반적인 데몬

컨트롤러와 데몬 사이에 데몬 관리 데몬을 둔 이유는 컨트롤러가 일반적인 포그라운드 프로세스이기 때문에 항상 작동하는 데몬을 관리하기에는 적절하지 않기 때문이다. 그렇기 때문에 항상 작동하는 데몬을 컨트롤러와 데몬 사이에 넣어 데몬들을 관리하도록 한 것이다.

포그라운드 프로그램 없이는 실행될 수 없는 데몬의 단점과 항상 데몬을 관리할 수 없는 포그라운드 프로그램의 단점을 컨트롤러-데몬 쌍으로 극복하는 것이다.

profile
HGU 20 김민석

0개의 댓글