💡 이 문서는 한빛미디어 - 이것이 우분투/리눅스다를 기반으로 공부하면서 체화를 위해 정리하는 글입니다. 💡
부팅 때 자동으로 켜지고 계속 백그라운드에서 실행되는 프로세스
서비스는 눈에 보이지 않지만 현재 시스템에서 동작 중인 프로세스이므로 백그라운드 프로세스의 일종이라고 할 수 있다.
💡 서비스 != 백그라운드 프로세스 💡
백그라운드 프로세스라는 점에서 서비스는 백그라운드 프로세스 범주 안에 들어가지만 둘이 같다고 할 순 없음.
백그라운드 프로세스는 작업이 완료되면 사라지지만, 서비스는 계속 실행되는 백그라운드 프로세스라는 차이가 있음.
데몬(daemon)과 서비스(service)" 둘 다 "부팅 때 자동으로 켜지고 계속 백그라운드에서 실행되는 프로세스"라는 의미
유닉스/리눅스
에선 데몬
, 윈도우
에선 "서비스"
라고 했었지만, 요즘은 99% 같은 의미로 양측(유닉/리눅스와 윈도우)모두에서 사용
서비스(Service)"란 단어는 "윈도우 운영체제"에서 주로 사용됐던 단어
"윈도우 OS와 함께 시작되어 계속 실행되는 백그라운드 프로세스"란 의미로 "데몬(Daemon)과 거의 비슷
"데몬"과 "서비스"란 것은 기능적으로 거의 같기에 혼용 가능
Linux는 OS가 부팅되면서 여러가지 데몬들이 실행됨.
부팅과 함께 실행되는 데몬은 네트워크 요청을 처리하는 데몬
, 하드웨어 동작을 처리하는 데몬
등, 시스템단에서 필요한 작업을 백그라운드로 처리하는 데몬들
이러한 데몬들을 Linux에서는 service
파일로 설정하여 실행하고 있으며, systemd
라는 프로세스가 관리
일반적으로 데몬 프로세스는 systemd
, syslogd
, httpd
, sshd
, named
처럼 프로세스 이름 마지막에 d
가 붙는다.
같은 의미인 service
를 붙이기도 함.
Systemd 경로 내 서비스 & 디렉터리들
✨ 서비스와 데몬의 1% 차이 ✨
데몬과 서비스를 만드는 방법에서 차이가 생김
윈도우
는 서비스를 등록하기 위해선sc.exe
와 같은 프로그램으로 윈도우 API함수를 이용해 등록해야 함
리눅스
는 만든 스크립트에'x'
실행권한을 준 상태로, 리눅스 시스템의 최초 프로세스인init 프로세스(centos 6.9 이하는 init, 7 이상은 systemd)
가 부팅 때 실행하는 스크립트 디렉토리에 넣어두면 바로 데몬이 됨
최초 프로세스인
systemd / 최상위 Parents
서비스는 웹 서버
, 네임 서버
, DB 서버
, FTP 서버
등의 프로세스도 지칭함.
웹 서버 데몬
, 네임 서버 데몬
등으로 부르기도 함.
"데몬(Deamon)"은 "부팅 때 자동으로 켜져 백그라운드에서 계속 실행되는"라는 뜻이기 때문에, 꺼지지 않고 실시간으로 클라이언트와 통신을 계속 해야하는 "서버 프로세스"들이 주로 "데몬"이라고 불림.
이렇게 서버에 사용되는 항상 실행되어야 하는 프로그램들은 이런 특징 때문에 "데몬"이라고 불림.
💡 systemd (System Management Daemon) 💡
- systemd라는 서비스 매니저 프로그램으로 서비스를 작동시키거나 관리
Ubuntu 15.04
이후부터 systemd의 모든 기능이 작동되며, systemd가 서비스 대부분을 관리
OS 부팅 시 OS에 필요한 여러 데몬들을 init해주는 역할
init
은 RedHat 계열(RedHat Enterprise, CentOS)' 리눅스 6.9이하 버전에서 리눅스의 정상적인 부팅을 위해 초기화를 해주는 프로세스라는 역할을 하는 최초의 프로세스
systemd
는 7이상 버전에서 기존 init 기능 + 시스템을 총 관리해주는 최초 프로세스
'init, systemd'
둘 다 최초의 프로세스로서 핵심적으로 하는 역할 (모든 프로세스의 부모, 프로세스 관리, 부팅에 관여 등등)은 비슷
- 이에 따라서 대부분의 리눅스 계열은
init
또는systemd
중 하나만 사용
OS 부팅 시 운영체제 중 최초로 시작되는 프로세스
1번 PID
를 갖는 프로세스로, 프로세스 트리에서 가장 상위의 프로세스이며 모든 프로세스의 직간접 부모인 데몬
systemd
ls -al /lib/systemd/system # '서비스 이름.service'라는 이름으로 확인 가능
/lib/systemd/system
디렉터리에 있는 파일들은 대부분 systemctl start/stop/restart {서비스 이름}
명령으로 실행/중지/재시작systemctl start/stop/restart {서비스 이름}
systemctl status {서비스 이름}
systemctl enable/disable {서비스 이름}