# systemd, Upstart, sysV init

세 가지 모두 리눅스 계열에서 서비스(데몬)을 관리하는 방식이다.

# 조사하기

PID 1번이 시작 프로그램. 여기서부터 조사하면 알 수 있다.

$ sudo stat /proc/1/exe
     File: '/proc/1/exe' -> '/sbin/init': 아직 알 수 없음
     File: '/proc/1/exe' -> '/sbin/upstart'
     File: '/proc/1/exe' -> '/lib/systemd/systemd'
1
2
3
4

또는

/etc/init.d: SysV init
/etc/init: upstart

$ /sbin/init --version
init (upstart 1.12.1)

$ dpkg -S /sbin/init
upstart: /sbin/init

$ dpkg -S /sbin/init
systemd-sysv: /sbin/init
1
2
3
4
5
6
7
8
9
10
11

# systemd

  • 최근 리눅스 대부분(Debian 8, OpenSUSE 42, Ubuntu 16.04, Fedora 23.10, CentOS 7)
  • pid파일 등 표준화되어서 자동 처리됨
  • 서비스파일: /etc/systemd/system/{name}.service
  • 실행: systemctl status {name}
    • systemctl deamon-reload
    • systemctl enable {name}
    • systemctl disable {name}

# upstart

  • 몇개 안남음(Ubuntu 14.04, LinuxMint 17.3)
  • unix SystemV init 호환.
  • Chrome OS, RHEL, Ubuntu 등에서 쓰임.
  • Fedora, Debian에서도 옵션으로 쓰임.
  • pid파일 등 서비스 파일에서 구현해줘야 함.
    • /var/run/{name}.pid
    • /var/lock/subsys/{name}
    • /var/log/{name}.log, /var/log/{name}.err
  • 서비스파일: /etc/init.d/{name}, /etc/rc{runlevel}.d/[S|K]{seq}{name}
    • rc는 링크파일, runlevel[2,3,4,5]는 S로 시작. [0,1,6]은 K로 시작, seq는 수행 우선순서
  • 실행: status {name}
  • 실행: service {name} status (호환)

# SysV init

  • /etc/rc.d/{name}
  • 실행: service {name} status
최종 수정: 2021-1-7 15:25:10