systemd 관련하여 재정리를 시작한다.



요약하면 systemd 는 부팅 중 시작하는 서비스(혹 데몬)들을 관리하는 놈이라고 볼수 있다.


부팅 시점에 정의해논 서비스들을 병렬적으로 실행 할 수 있다. 특정 서비스 동작후에 원하는 서비스가 동작하도록 정의할수 있지만 명확한 타이밍에 동작 가능하도록 하는것은 아직 모르겠다.



우분투 15.04 부터 upstart-job 대신 systemd 를 사용하고 있다. 
이전까지 리눅스는 PID 1번 프로세스가 가장 먼저 실행되어 OS 에 필요한 각종 데몬들을 init 하였다.

이전에는 서비스 실행,중지를 service <service name> start | stop | restart 의 명령으로 제어했으나, systemd 를 사용하는 시스템에서는 systemctl start | stop | restart <unit name> 으로 관리하게 된다.
upstart-job에서는 데몬들을 service라는 네이밍을 붙였고, systemd에서는 unit이라는 이름을 사용한다.
systemd에서는 <unit name>.service이라는 파일을 systemctl enable [<unit name>.service] or [unit name] 명령으로 설치를 할 수 있다.(ini 포맷사용)
systemctl enable [unit name] 명령어를 실행하면 관련 서비스를 /etc/systemd/system/[target]/ 경로에 링크파일을 생성한다.
systemctl disable[unit name] 명령어를 실행하면 링크파일을 삭제한다.

  1. systemd는 최소한의 서비스만을 실행시키고 병렬화해서 실행시키는데 주안점을 두고 있기 때문에 기존에 순차적 방식으로 처리하는 SysV에 비해서 부팅속도가 빠른 편이다.
  2. 부팅 시간을 단축 시킬(즉, 불필요한 프로세스가 있는지 여부부터 오동작으로 인해 시간을 많이 잡아먹는지) 방안에 대해서 생각해 볼 수 있다.


  • systemctl 명령어 

   systemd 와 관련된 명령어를 수행한다.

 $ systemctl == $systemctl list-units // 동일한 명령으로 list-units 들을 보여준다


  • 런레벨은 target 으로 관리
systemd는 기존 init 커맨드와 달리 숫자 기반의 런레벨이 아니라 각 런레벨에 대한 설정 세트를 통해서 런레벨을 변경한다.


SysV Runlevel 

Systemd Target 

Notes 

 0

runlevel0.target, poweroff.target 

시스템을 중지 

 1,s, single

 runlevel1.target, rescue.target

단일 사용자 모드 

 2, 4

runlevel2.target, runlevel4,target, multi-user.target

사용자 정의, 기본 3과 동일 

 3

 runlevel3.target , multi-user.target

다중 사용자, 그래픽 사용하지않음. 사용자는 콘솔이나 네트워크를 통해 다중 접속할 수 있다. 

 5

runlevel5.target, graphical.target 

 다중사용자, 그래픽. 런레벨3에서 그래픽 추가된 서비스를 제공

 6

runlevel6.target, reboot.target 

 재부팅

emvergency 

emergency.target 

Emergency shell 



현재 사용하는 런레벨을 확인한다.

# systemctl get-default

graphical.target



  • 로그관리 (syslog 에서 지정하는 debug, info, err 등) 조회도 가능하다.

       # journalctl -p err >> err


  • 유용한 명령어
    1. systemd-analyze : 부팅에 걸린시간 표시 (tcc8935 없음)
    2. systemd-analyze blame : 부팅시 서비스별 걸린 시간표시 (tcc8935 없음)
    3. journalctl : 부팅을 포함한 전체적인 시스템 로그
    4. journalctl -b : 마지막 부팅 이후 시스템 로그
    5. hostnamectl : 호스트 이름표시
    6. hostnamectl set-hostname [변경이름] : 호스트이름 변경




  • 서비스 파일 등록하는 법
    • 부팅시 서비스가 실행하게 된다.
    • 재부팅시 적용됨
    • /lib/system/systemd 폴더와 /etc/systemd/system 폴더 안에 관련 파일을 확인하고 각 시스템 폴더에 링크파일을 생성해 주는 역할을 한다. 
      $ systemctl enable [serviceName|serviceName.service]
      $ systemctl enable XX 나 systemctl enable XX.service

  • 서비스 파일 해제하는 법
    • 서비스가 등록된 링크파일을 삭제한다.
    • 재부팅시 적용됨
      $ systemctl disable [serviceName|serviceName.service]
      $ systemctl disable XX 나 systemctl disable XX.service
  • 관련 서비스 start
    • 관련된 시스템이 동작하도록 한다.
    • 현재 각 서비스 파일을 보면 Restart=on-failure 로 등록되어 어서 앱이 죽거나 kill 시 자동 restart 되어지고 있다. 재실행하지 않으려면 주석처리 -> #Restart=on-failure
      $ systemctl start XX

  • 관련 서비스 stop
    • 관련된 시스템을 중지시킨다.
    • 서비스가 동작시 해당 어플리케이션 파일을 변경시킬 수 없다. 소스변경이 이루어질시 해당 하는 서비스를 중지시키고 해야함.
      $ systemctl stop XX

참고 


'Linux > Systemd' 카테고리의 다른 글

[SYSTEMD] INSTALL 섹션 옵션  (0) 2016.07.18
[Systemd] Unit .mount 설명  (0) 2016.07.12
journalctl 정의  (0) 2016.07.12
Systemd 내용  (2) 2016.06.15

+ Recent posts