Linux systemd (systemctl)

Hansu Kim·2022년 4월 8일
0

OS (Linux) / 인프라

목록 보기
5/7

Systemd

  • Systemd는 부팅, 서비스 관리, 로그 관리 등 시스템 전반적 영역에 사용되는 프로세스
  • PID 1을 차지하고 있는 중요한 프로세스
  • 기존에는 init 프로세스가 PID1을 차지하고, service 명령어를 통해 시스템 서비스들을 제어했으나, systemd로 인해 대체됨 (service 명령어 -> systemctl 명령어)

ps 명령어로 모든 프로세스 확인 가능 (ps -eaf)
/proc 경로에 PID값으로 된 디렉토리에서 메모리 사용량/Io/cpu 사용량 등 프로세스의 모든 정보가 확인 가능

systemd service의 활용

  • web app에서 compute-heavy task의 비동기처리를 통한 offloading
  • Scheduling tasks for later
  • daemon listening to a socket to communicate with clinets directly

Systemd Directory

  • /etc/systemd/: Configure
  • /lib/systemd/: 바이너리 실행파일
  • /lib/systemd/system/: Service, Target이 위치

/etc/systemd/system/ 서비스파일

[Unit]
Description=ROT13 demo service
After=network.target
StartLimitBurst=5
StartLimitIntervalSec=1
StartLimitAction=reboot
[Service]
Type=simple
Restart=always
RestartSec=1
User=centos
ExecStart=/usr/bin/env php /path/to/server.php

[Install]
WantedBy=multi-user.target
  • Descripton: 유닛에 대한 설명

  • After: 시작 순서 지정

  • StartLimitBurst: 재시작 실패시, 재시도 횟수

    • 0 설정시 무제한 재시도
  • StartLimitIntervalSec: 재시도 간 대기시간(초)

    • 1 이상 설정 권고
  • StartLimitAction: 재시도 횟수가 StartLimitBurst 도달시 수행할 액션

  • Restarts: Restarting on exit

    • on-failure로 설정시, status가 0이 아니면 재시작된다.
    • always 설정시, 만약 재시작이 실패할 경우, 10초 간격으로 5회까지 시도
  • RestartSec: 프로세스 재시작이 수행될 경우, 몇초 기다렸다가 재시작 할건지

  • User: Linux username

  • ExecStart: 실행 경로

위 항목 외에도 많은 설정 가능 항목들이 있어 커스터마이징 자유도가 높다.

systemd 서비스 파일 지정시 상세한 옵션 Document
http://manpages.ubuntu.com/manpages/bionic/man5/systemd.unit.5.html

0개의 댓글