systemctl을 사용하여 커스텀 서비스 등록방법
포스트
취소

systemctl을 사용하여 커스텀 서비스 등록방법

systemctl 이란?

시스템의 서비스를 관리하고 제어하는 프로세스는 systemd이다.

이러한 systemd를 제어하기 위해 사용하는 명령어 도구가 systemctl이다.


systemctl의 기본 명령어

서비스 관리 명령어

systemctl은 서비스의 시작, 중지, 상태 확인 등을 처리한다.

명령어설명
systemctl start <서비스>서비스를 시작한다.
systemctl stop <서비스>서비스를 중지한다.
systemctl restart <서비스>서비스를 재시작한다.
systemctl reload <서비스>설정 파일을 다시 로드한다.
systemctl status <서비스>서비스 상태를 확인한다.

부팅 시 서비스 활성화/비활성화

Linux에서는 특정 서비스를 부팅 시 자동으로 실행하거나 비활성화할 수 있다.

명령어설명
systemctl enable <서비스>부팅 시 서비스를 활성화한다.
systemctl disable <서비스>부팅 시 서비스를 비활성화한다.
systemctl is-enabled <서비스>서비스가 활성화 상태인지 확인한다.

커스텀 서비스 등록

systemctl을 사용하여 커스텀 서비스를 등록할 수 있다.

커스텀 서비스를 등록하려면 다음과 같은 단계를 따르면 된다.

  1. 서비스 파일 생성
  2. 서비스 파일 리로드
  3. 서비스 시작 및 자동 시작 설정
  4. 상태 확인 및 로그 보기

서비스 파일 생성

서비스 파일은 /etc/systemd/system/ 디렉토리에 위치해야 하며, .service 확장자를 가진다. (예시: myprocess.service)

서비스 파일 내용은 다음과 같이 작성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=My Custom Process
After=network.target

[Service]
ExecStart=/path/to/your/program --your-arguments
WorkingDirectory=/path/to/working/directory
Restart=always
User=your-username
Group=your-groupname

[Install]
WantedBy=multi-user.target

각 필드에 대한 설명은 다음과 같다.

  • [Unit]
    • Description: 서비스 설명.
    • After: 서비스 시작 순서를 지정 (예: network.target 이후 시작).
  • [Service]
    • ExecStart: 실행할 명령어 경로와 인자.
    • WorkingDirectory: 프로세스가 실행되는 작업 디렉토리.
    • Restart: 프로세스 실패 시 재시작 정책 (always, on-failure 등).
    • User/Group: 프로세스를 실행할 사용자와 그룹.
  • [Install]
    • WantedBy: 서비스가 어떤 target에서 활성화될지 지정 (multi-user.target은 일반적인 시스템 레벨).

더 많은 내용을 알고 싶다면 다음을 참고한다 : https://www.freedesktop.org/software/systemd/man/systemd.service.html

서비스 파일을 정상적으로 생성했다면, 거의 다 완료된 것으로 볼 수 있다.

서비스 파일 리로드

서비스 파일을 생성하거나 수정한 경우, systemctl에게 변경 사항을 알려야 한다.

1
sudo systemctl daemon-reload

서비스 시작 및 자동 시작 설정

서비스를 시작하고 부팅 시 자동으로 시작하도록 설정한다.

1
2
3
4
5
# 서비스 시작
sudo systemctl start myprocess

# 부팅 시 자동 시작
sudo systemctl enable myproces

상태 확인 및 로그 보기

서비스 상태 확인

1
sudo systemctl status myprocess

서비스 로그 확인

1
sudo journalctl -u myprocess

journalctl 명령어는 systemd가 생성하는 로그를 볼 수 있는 명령어이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

리눅스의 init 프로세스와 systemd 프로세스

SDKMAN 개발 환경을 관리하는 방법

Comments powered by Disqus.