⚙️ Devops/🐧 Linux

[Linux] systemctl 명령어로 서비스 등록, 생성, 삭제

2022. 3. 18. 21:15
목차
  1. Linux Systemd란 무엇인가?
  2. Systemd를 이용해서 서비스를 만들기
  3. 테스트용 Script 생성
  4. 서비스 생성 및 등록
  5. systemctl 명령어 모음
  6. systemctl start: 서비스 시작
  7. systemctl status: 서비스 상태 확인
  8. systemctl stop: 서비스 중지
  9. systemctl restart: 서비스 재시작
  10. systemctl enable: 재부팅 시 자동 실행되도록 설정
  11. systemctl disable: 재부팅 시 자동 실행되지 않도록 설정
  12. systemctl reload: 서비스 리로드
  13. systemctl daemon-reload: 전체 서비스 리로드
  14. REFERENCES
반응형

Linux Systemd란 무엇인가?

https://en.wikipedia.org/wiki/Systemd

리눅스를 실행시키면 systemd라는 프로세스를 한번 쯤 보신 적이 있으실 겁니다. systemd는 PID1에 속해있을 만큼 굉장히 중요한 역할을 하는데 바로 Linux 운영체제용 시스템 및 서비스를 관리하는 역할을 수행합니다.

PID1이므로 부모 프로세스가 없고 Linux가 부팅되었을 때 가장 먼저 실행되며 사용자가 Linux를 사용할 수 있도록 초기 서비스들을 병렬적으로 실행시켜주는 역할을 합니다. 그리고 가장 마지막에 종료되어 시스템 및 서비스를 종료시키는 역할도 합니다.

기존에는 가장 오래된 init 시스템 중 하나인 Unix System V init system(SysV)와 같은 init 시스템을 사용하고 있었는데 2015년 부터 systemd를 공식 채택하였습니다. 처음엔 많은 우려 곡절이 있었지만 기존 init 시스템에 비해 훨씬 빠른 병렬 처리와 서비스 간 종속적인 실행도 더욱 효율적으로 처리하며 서비스들을 관리하는 측면에서 훨씬 나았기 때문에 이를 공식으로 채택한게 아닐까 생각됩니다.

Systemd를 이용해서 서비스를 만들기

systemd는 서비스들을 실행시키기 위한 스크립트들을 /etc/systemd/system/ 에서 관리합니다. 해당 디렉토리를 ls -al 명령어로 살펴보면 심볼릭 링크로 가득한 것을 확인하실 수 있습니다. 만약 부팅 시 실행시키고 싶은 서비스가 있다면 위 디렉토리에 서비스를 심볼릭 링크로 연결시켜야 합니다.

테스트용 Script 생성

아래와 같이 테스트용 스크립트를 만들어봅시다!

$ vi /root/my-test-script.sh

#!/bin/bash

while :
do
	echo -e "Hi! this service is run by systemd"
	sleep 1
done

서비스 생성 및 등록

$ vi /root/my-systemd-daemon.service

[Unit]
Description=My Systemd Daemon

[Service]
Type=simple
ExecStart=/root/my-test-script.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
$ sudo ln -s /root/my-systemd-daemon.service /etc/systemd/system/my-systemd-daemon.service

사실 바로 /etc/systemd/system 아래에다가 service를 생성해도 됩니다. 하지만 관리의 편의성을 위해서 테스트용 스크립트와 동일 디렉토리에 위치시켰습니다.

systemctl 명령어 모음

systemctl start: 서비스 시작

서비스를 실행하기 위한 명령어 입니다.

$ systemctl start my-systemd-daemon

systemctl status: 서비스 상태 확인

서비스의 상태를 확인하기 위한 명령어 입니다. 간단한 로그도 확인할 수 있습니다.

$ systemctl status my-systemd-daemon

systemctl stop: 서비스 중지

서비스를 중지할 때 사용하는 명령어 입니다.

$ systemctl stop my-systemd-daemon

 

systemctl restart: 서비스 재시작

서비스를 중지 -> 시작 순으로 실행합니다.

$ systemctl restart my-systemd-daemon

systemctl enable: 재부팅 시 자동 실행되도록 설정

enable은 단지 시작 프로그램에 추가시켜 부팅 시 실행되도록 하기 위해 사용합니다.

$ systemctl enable my-systemd-daemon

systemctl disable: 재부팅 시 자동 실행되지 않도록 설정

enable한 서비스를 시작 프로그램에서 제외시키기 위해 disable 명령어를 사용할 수 있습니다.

$ systemctl disable my-systemd-daemon

systemctl reload: 서비스 리로드

reload는 restart와 다르게 서비스를 종료했다가 실행시키는게 아닌 해당 서비스의 configuration만 수정했을 경우 빠르게 리로드하여 반영하기 위해 사용합니다.

$ systemctl reload my-systemd-daemon

systemctl daemon-reload: 전체 서비스 리로드

daemon-reload는 reload와 다르게 전체 서비스에 대해서 configuration을 리로드 합니다.

$ systemctl daemon-reload

REFERENCES

 

Creating and Managing Daemon Services in Linux using Systemd

Introduction

medium.com

 

반응형
저작자표시 (새창열림)
  1. Linux Systemd란 무엇인가?
  2. Systemd를 이용해서 서비스를 만들기
  3. 테스트용 Script 생성
  4. 서비스 생성 및 등록
  5. systemctl 명령어 모음
  6. systemctl start: 서비스 시작
  7. systemctl status: 서비스 상태 확인
  8. systemctl stop: 서비스 중지
  9. systemctl restart: 서비스 재시작
  10. systemctl enable: 재부팅 시 자동 실행되도록 설정
  11. systemctl disable: 재부팅 시 자동 실행되지 않도록 설정
  12. systemctl reload: 서비스 리로드
  13. systemctl daemon-reload: 전체 서비스 리로드
  14. REFERENCES
'⚙️ Devops/🐧 Linux' 카테고리의 다른 글
  • [Linux] scp 명령어 - 서버로 파일 전송 및 다운
  • [Ubuntu] Apache(아파치) SSL 적용
iseunghan
iseunghan
꾸준하게 열심히..
iseunghan
iseunghan

공지사항

  • 어제보다 나은 오늘이 되기 위해 🔥
  • 분류 전체보기 (262)
    • 💐 Spring (14)
      • 개념 및 이해 (2)
      • Spring 핵심 기술 (24)
      • Spring REST API (8)
      • Spring MVC, DB 접근 기술 (7)
      • Spring Security (23)
      • Spring in Action (1)
    • 🌻 JAVA (84)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
      • 알고리즘, 자료구조 (13)
      • 디자인 패턴 (7)
      • 정리정리정리 (43)
      • JUnit (1)
    • 🔖 Snippets (3)
      • Javascript (3)
    • ⚙️ Devops (22)
      • ⛏ Git (11)
      • 🐳 Docker (6)
      • 🐧 Linux (3)
      • 🌈 Jenkins (1)
      • 📬 Kafka (1)
    • 💬 ETC.. (4)
      • 💻 macOS (2)
    • 🌧️ ORM (2)
      • JPA (2)
    • 🐍 Python (3)
    • 📚 Databases (15)
      • 오라클로 배우는 데이터베이스 개론과 실습(2판) (3)
      • RealMySQL 8.0 (8)
    • 🔥 Computer Science (5)
      • 📡 네트워크 (5)
    • 🏷️ 협업 (1)
    • 📜 코딩테스트 (38)
      • BAEKJOON\수학 1, 수학 2 (8)
      • BAEKJOON\재귀 (5)
      • BAEKJOON\브루트 포스 (3)
      • BAEKJOON\정렬 (1)
      • BAEKJOON\백트래킹 (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\이분탐색 (1)
      • BAEKJOON\다이나믹 프로그래밍 (9)
      • BAEKJOON\그리디 알고리즘 (0)
    • ✨ ISEUNGHAN (1)

인기 글

전체
오늘
어제
반응형
hELLO · Designed By 정상우.
iseunghan
[Linux] systemctl 명령어로 서비스 등록, 생성, 삭제
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.