[컴][리눅스] systemd 사용법

sys 사용법 / init 사용법 /


systemd 사용법

commands

  • systemctl : 현재 동작중인 서비스들을 보여준다.
    • systemctl list-unit-files : 등록된 모든 service 들을 보여준다.
    • systemctl list-dependencies mariadb.service : mariadb.service 의 서비스간의 의존관계(dependecy)를 보여준다.
    • systemctl set-default <new_taget_file> : 기본 target 을 변경
    • systemctl get-default : 기본 target 을 알려준다.
    • systemctl isolate runlevel5.target : runlevel5 로 runlevel 을 변경한다.
    • service 실행
      • systemctl start foo.service
      • systemctl stop foo.service
      • systemctl restart foo.service
      • systemctl status foo.service
    • 부팅시 실행
      • systemctl enable foo.service : 부팅시 실행
      • systemctl disable foo.service : 부팅시 실행하지 않도록
  • systemd-analyze : 부팅에 소요된 시간을 알 수 있다.
    • systemd-analyze blame : 각 서비스별 초기화에 걸린 시간을 확인할 수 있다.
    • systemd-analyze plot : init 시간을 그래프로 나타내 준다. output 을 html 로 저장해서 보면 된다.
    • systemd-analyze critical-chain <service_name> : 초기화에 시간을 많이 먹는 서비스들을 보여준다.
  • systemd-cgls
  • systemd-cgtop
  • systemd-loginctl


unit file

기본적으로 /usr/lib/systemd/system 디렉토리에 Unit File 을 보관한다. 보통 .service 의 확장자(?)를 가지고 있다.

만약 기존의 unit file 을 변경하려면, 이 파일을 직접 변경하는 것보단 override 하는 것을 추천한다.[ref.1] (etc/systemd/system/<service>.service)

systemctl edit

systemctl edit mariadb
수정할 수 있다. 자세한 내용은 ref. 1, ref. 4 을 확인하자.

unit file 만들기



target

타겟(Target)은 Sys V 에 Run Level 과 비슷하다. 즉, booting 을 어느 단계까지 할 것이냐를 결정하는 것이라고 보면 된다.

target 도 아래 경로에서 확인할 수 있다.(.target 으로 되어 있다.)

  • /usr/lib/systemd/system/

default target 변경

기본적으로 runlevel*.target(symbolic link 이다.) 이 존재한다. 그래서 이것을 sysv 의 runlevel 처럼 사용하면 된다.


# systemctl set-default runlevel3.target
# systemctl get-default

isolate target

현재 target 을 바꾸고 싶으면 isolate 을 사용하면 된다. (isolate 의 의미)
# systemctl isolate runlevel5.target
예를 들어 만약 gui 를 사용하고 있는데 isolate runlevel3.target 을 하면, gui 를 닫아버리고, runlevel3.target 에 맞추게 된다.

현재 active target 확인

# systemctl list-units --type=target


See Also

  1. 쿠…sal: [컴] systemd 등록 방법

References

  1. CentOS 7 Systemd 이해하기 - Voyager of Linux
  2. 서버 프로세스를 관리하는 올바른 방법 - CODEOK.NET
  3. Useful SystemD commands (hints for systemctl or systemctl vs chkconfig and service)
  4. 10.6. Creating and Modifying systemd Unit Files - Red Hat Customer Portal

댓글 없음:

댓글 쓰기