리눅스프로그래밍

우분투 리눅스 - systemd 서비스

헬로월드! 2020. 6. 4. 12:24

systemd 서비스 

- 리눅스 시스템 및 서비스 관리자

- init 프로세스가 하던 작업을 대신해서 수행한다.

- 다양한 서비스 데몬을 시작하고 프로세스들의 상태를 유지하며 시스템의 상태를 관리한다.

 

init 프로세스

- init 프로세스는 스크립트를 순차적으로 실행하여 다른 프로세스를 동작시킨다.

- 우분투의 14.10 ver 까지는 자체적으로 개발한 upstart 를 기존의 init 대신 사용했으나 지금은 upstart 를 설치 안함

- init을 systemd 로 대체 

- upstart 와 관련된 스크립트 파일은 /etc/init 디렉터리 , 작업명.conf 파일로 구성

- init 과 관련된 스크립트 파일은 /etc/init.d 디렉터리에 있으며 아직 일부 서비스의 스크립트 파일이 남아있다.

init 스크립트 방식의 서비스와 systemd 서비스가 아직 공존하는 과도기!

실제 ls /etc/init.d 명령을 입력해보면 나오는걸 볼 수 있다.

 

런레벨 

- init 프로세스는 없어졌지만 init 프로세스에서 사용하던 런레벨의 개념은 이해가  필요하다. 

- init 시스템의 단계를 일곱 개로 정의하여 구분하고 각 단계에 따라 셸 스크립트를 실행하는데, 이 단계들을 런레벨 이라고 한다. 

런레벨 의미  관련 스크립트의 위치
0 시스템 종료 /etc/rc0.d
1,S 응급 복구 모드(단일 사용자 모드) /etc/rc1.d /etc/rcS.d
2 다중 사용자 모드  /etc/rc2.d
3   /etc/rc3.d
4   /etc/rc4.d
5 그래피컬 다중 사용자 모드 /etc/rc5.d
6 재시작 /etc/rc6.d

- 런레벨별로 실행하는 스크립트 파일은 /etc/init.d 에 있는 파일에 대한 심벌릭 링크 

 

systemd 유닛

- 전체 시스템 및 서비스들을 시작하고 관리하는 데 유닛이라 부르는 구성 요소를 사용한다. 

- systemd 는 관리 대상의 이름을 '서비스명.유닛 종류' 형태로 관리한다.

- systemd 유닛의 종류 

service  가장 명백한 유닛, 데몬 시작, 종료, 재시작,로딩을 한다. atd.service
socket 소켓을 관리하는 유닛  dbus.socket
device 리눅스 장치 트리에 있는 장치를 관리한다. sys-module-fuse.device
mount 디렉터리 계층 구조의 마운트 포인트를 관리한다. boot.mount
target 유닛을 그루핑한다. basic.target
swap 스왑 장치를 관리한다.  dev-mapper-fedora\x2.dswap.swap
path 경로를 관리한다. cups.path
timer 타이머와와 관련된 기능을 관리한다. dnf-makecache.timer
slice 프로세스 그룹의 자원을 계층적으로 관리한다. system.getty.slice
scope 외부에서 생성된 프로세를 관리한다. init.scope

등등..