본문 바로가기
[AWS-FRF]/EC2

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

by METAVERSE STORY 2024. 8. 30.
반응형
728x170

 

 

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

 

 

 
 
반응형
그리드형

댓글