[Linux] 서비스 제어를 위한 systemctl 사용법

식빵·2026년 1월 13일

linux

목록 보기
6/6

사용법

서비스 목록 조회

# 서비스 목록조회 - [Unit 파일명, Load/Active 상태, Description] 이 조회됩니다.
sudo systemctl list-units --type=service

## 만약 running 중인 것만 조회하고 싶다면 아래처럼...
sudo systemctl list-units --type=service --state=running

## 정확히 어떤 서비스 명을 사용하는지 모를 때는 Description 에 사용할 법한 용어로 검색합니다.
sudo systemctl list-units --type=service | grep -i 'Nginx'

서비스 상태 확인

sudo systemctl status 서비스_이름

서비스 실행/중지/재시작

sudo systemctl start 서비스_이름
sudo systemctl stop 서비스_이름
sudo systemctl restart 서비스_이름

reboot 후 서비스 자동 실행

sudo systemctl enable 서비스_이름

# 비활성화 하려면 아래처럼 
# sudo systemctl disable 서비스_이름

서비스 실행 + reboot 후 자동 실행

sudo systemctl enable 서비스_이름 --now

unit file 내용 확인

sudo systemctl cat 서비스_이름

unit file 내용 편집 및 적용

# 편집(=override)
sudo systemctl edit 서비스_이름

# 참고로 수정된 unit file 이 재 적용되게 하려면 아래처럼 해준다.
sudo systemctl daemon-reload # 이건 안 해도 될 수도 있지만, 안전빵으로 합니다.
sudo systemctl restart 서비스_이름

# 수정한 후에 확인 
sudo systemctl status 서비스_이름

# override 된 내용 확인
systemctl cat 서비스_이름

참고(1): edit 유의사항과 unit file 우선순위

아래 그림은 sudo systemctl edit nginx 를 입력했을 때 화면입니다.

여기서 좀 알아야 할 게 있습니다.

  1. edit 을 할 때는 반드시 편집하고자 하는 내용을 위의 빨간색 박스 친 곳에 입력해야 합니다. 그외의 곳에는 편집 내용을 작성해도 모두 무시됩니다.

  2. 이 편집 내용은 원본 *.service 파일의 내용을 변경하는 게 아닌 기존
    내용에서 override 할 내용을 갖는 override.conf 파일을 생성하는 겁니다.
    추후에 이 override 내용을 없애고 싶으면 sudo systemctl revert 서비스_이름 처럼 입력하면 됩니다.


참고(2): 전체 unit file 내용을 수정하고 싶으면?

일부 override 를 하는 게 아니라 기존 unit file 을 통으로 대체하고 싶다면
아래처럼 명령어를 작성합니다.

sudo systemctl edit --full 서비스이름

이러면 기존의 *.service 파일과 완전히 동일한 복제본을
/etc/systemd/system 디렉토리이 안에 만들어서 수정사항을 적용하게 됩니다.




참고: systemctl

systemctl 은 systemd 가 관리하는 다양한 유닛(unit)을 제어하는 명령어입니다.
그렇다면 systemd 과 unit 은 뭘까요?

  • systemd 는 리눅스가 부팅될 때 가장 먼저 실행되는 프로그램입니다.
  • systemd 는 리눅스 시스템의 모든 자원과 작업의 단위를 관리하는데,
    이때 이 관리 대상들을 unit 이라 부릅니다.
  • unit 에는 다양한 종류가 있는데, 그중에서 service(=daemon) 도 존재합니다.
    그래서 systemctl list-units --type=service 처럼 조회가 가능한 겁니다.

systemctl --type help 를 통해서 전체 타입을 확인할 수 있습니다.



참고: Unit File

unit file 이란?

unit file 은 systemd 의 unit 들에 대한 설정 정보 들이 담겨있는 파일입니다.
그중에서 서비스와 관련된 unit file은 *.service 확장자가 붙습니다.

서비스 unit file 의 경우에는 systemd 가 서비스를 어떻게 실행하고 관리할지
에 대한 설정이 작성되어 있습니다.

해당 unit file 의 위치를 확인하고 싶으면 sudo systemctl status nginx 처럼
입력해서 상단에 나오는 경로가 바로 unit file 의 경로입니다. (아래 그림 참고)

unit file 우선순위

service 파일은 아래처럼 4가지가 있고 디렉토리에 있을 수 있고,
상단에 있을 수록 우선순위 더 높게 적용됩니다.

  • /etc/systemd/system
  • /run/systemd/system
  • /usr/lib/systemd/system
  • /lib/systemd/system

예를들어서 아래처럼 같은 이름의 서비스 unit file 이 있다면...

  • /usr/lib/systemd/system/nginx.service
  • /etc/systemd/system/nginx.service

/etc/systemd/system/nginx.service 가 적용됩니다!


unit file 디렉토리들

/etc/systemd/system

  • 시스템 관리자가 직접 생성하거나 수정한 파일
  • 용도: 기본 설정을 오버라이드하거나 커스텀 서비스 추가

/run/systemd/system

  • 런타임에 동적으로 생성되는 임시 파일
  • 재부팅하면 사라짐
  • 용도: 일시적인 설정 변경

/usr/lib/systemd/system 또는 /lib/systemd/system

  • 패키지 매니저가 설치한 기본 파일
  • 용도: 소프트웨어 기본 설정
  • 참고: /lib/systemd/system/usr/lib/systemd/system 의 심볼릭 링크인 경우가 많음
profile
백엔드 개발자로 일하고 있는 식빵(🍞)입니다.

0개의 댓글