1.시스템&인프라/Ubuntu

7. systemctl 명령어 요약 정리(서비스 등록 및 관리)

쿼드큐브 2025. 3. 29. 16:37
728x90
반응형

Linux 시스템의 서비스 관리에 필수적인 systemctl 명령어를 정리했습니다. 서비스 시작, 자동 실행 설정, 로그 확인 등 systemd 기반 시스템 운영에 꼭 필요한 명령어를 실용 예시와 함께 설명합니다.

 

systemctl 명령어 요약 정리(서비스 등록 및 관리)

 

목차

1. systemctl과 서비스 유닛 파일 구조 이해하기

2. 서비스 관리:실행 및 상태

3. 서비스 자동 실행 설정 및 제어

4. 시스템 상태 및 서비스 정보 확인

5. 전원 및 절전 관련 명령어

6. 서비스 로그 확인 방법

7. systemd 서비스 파일 작성 예시

8. 서비스 등록 및 실행 절차

관련 글 링크

 

 

1. systemctl과 서비스 유닛 파일 구조 이해하기

systemctl은 systemd 기반 Linux 시스템에서 서비스를 제어하는 핵심 명령어입니다.

데몬(서비스)뿐 아니라 타이머, 마운트, 전원 관리까지 포괄하며, 시스템 운영의 중심 역할을 합니다.

서비스 관리를 위해 사용하는 유닛(Unit) 파일은 다음 위치에 존재할 수 있으며, 시스템이 읽는 우선순위도 존재합니다:

경로 설명 예시
/etc/systemd/system/ 사용자가 만든 커스텀 서비스 파일 myapp.service
/lib/systemd/system/ 운영체제에서 제공하는 기본 서비스 sshd.service, nginx.service
~/.config/systemd/user/ 사용자 전용 서비스 user-daemon.service

우선순위는 다음과 같습니다:

  • /etc/systemd/system/ > /lib/systemd/system/ > ~/.config/systemd/user/

동일한 서비스 이름이 여러 경로에 존재할 경우, 가장 우선순위가 높은 경로의 유닛 파일이 실행됩니다.

이 구조를 이해하면 systemctl 명령어의 동작을 정확히 예측할 수 있습니다.

 

2. 서비스 관리:실행 및 상태

systemctl start <서비스> 서비스 시작
systemctl stop <서비스> 서비스 중지
systemctl restart <서비스> 서비스 재시작
systemctl reload <서비스> 설정 파일만 다시 로드
systemctl status <서비스> 서비스 상태 확인
systemctl is-active <서비스> 서비스가 활성 상태인지 확인 (active, inactive 출력)

 

3. 서비스 자동 실행 설정 및 제어

systemctl enable <서비스> 부팅 시 자동 시작 활성화
systemctl disable <서비스> 부팅 시 자동 시작 비활성화
systemctl is-enabled <서비스> 서비스가 자동 시작 설정인지 확인 (enabled, disabled 출력)
systemctl mask <서비스> 서비스 실행을 완전히 차단 (start 명령어도 차단됨)
systemctl unmask <서비스> mask 해제

 

4. 시스템 상태 및 서비스 정보 확인

systemctl list-units --type=service 실행 중인 서비스 목록 조회
systemctl list-unit-files --type=service 모든 서비스의 활성화 여부 확인 (enabled, disabled, static 등)
systemctl daemon-reload 서비스 설정 파일 변경 사항 반영
systemctl show <서비스> 서비스의 모든 설정 정보 출력
systemctl cat <서비스> 서비스의 유닛 파일 내용 출력

 

5. 전원 및 절전 관련 명령어

systemctl reboot 시스템 재부팅
systemctl poweroff 시스템 종료
systemctl suspend 시스템을 절전 모드로 전환
systemctl hibernate 시스템을 최대 절전 모드로 전환
systemctl halt 시스템을 멈춤 (전원은 켜진 상태)

 

6. 서비스 로그 확인 방법

journalctl -u <서비스> 특정 서비스의 로그 확인
journalctl -xe 최근 시스템 로그 및 에러 확인
journalctl -b 현재 부팅된 이후의 로그 출력

 

7. systemd 서비스 파일 작성 예시

서비스를 관리하려면 /etc/systemd/system/ 경로에 서비스 유닛 파일을 작성해야 합니다.

예: /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Application Server  # 서비스 설명
After=network.target  # 네트워크가 활성화된 후 서비스 시작

[Service]
Type=forking  # 백그라운드에서 실행되는 서비스 유형 (Tomcat은 자체 프로세스를 포크함)
User=tomcat  # Tomcat 서비스를 실행할 사용자
Group=tomcat  # Tomcat 서비스를 실행할 그룹
WorkingDirectory=/opt/tomcat  # Tomcat의 작업 디렉토리 (운영할 경로)

# Tomcat 실행 스크립트 경로
ExecStart=/opt/tomcat/bin/startup.sh  # Tomcat 시작 스크립트
ExecStop=/opt/tomcat/bin/shutdown.sh  # Tomcat 종료 스크립트

# 재시작 정책
Restart=always  # 서비스가 종료되면 항상 재시작

# 환경 변수 설정 (필요 시 추가)
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk"  # Java 경로 설정
Environment="CATALINA_HOME=/opt/tomcat"  # Tomcat 홈 디렉토리 설정

[Install]
WantedBy=multi-user.target  # 멀티유저 모드에서 실행되도록 설정 (서버 부팅 시 자동 실행)

target 종류

타겟 이름 설명
default.target 시스템이 부팅될 때 실행되는 기본 타겟 (보통 multi-user.target 또는 graphical.target)
multi-user.target 네트워크 서비스가 동작하는 CLI 기반의 서버 모드 (Runlevel 3)
graphical.target GUI 환경을 제공하는 모드 (Runlevel 5)
rescue.target 단일 사용자 모드, 기본적인 유지보수 모드 (Runlevel 1)
emergency.target 긴급 복구 모드, 최소한의 시스템만 실행됨

 

8. 서비스 등록 및 실행 절차

1. 서비스 파일 저장 후 systemd 데몬 리로드
$systemctl daemon-reload

2. tomcat 서비스 시작
$systemctl start tomcat

3. 부팅시 자동 실행 등록
$systemctl enable tomcat

4. 서비스 상태 확인
$systemctl status tomcat

systemctl 명령어의 기본 사용법부터 서비스 등록, 자동 실행, 로그 확인까지 전체적인 흐름을 정리했습니다. systemd 기반 Linux 시스템을 관리할 때 꼭 알아야 할 핵심 지식입니다.

 

 

관련 글 링크

 

728x90
반응형