[1. 개요]
.service 파일 (systemd 서비스 파일) 은 특정 프로세스를 systemd 에 등록하여
자동 실행 및 관리하도록 하는 설정 파일이다.
보통, 아래 경로에 위치한다.
- /etc/systemd/system
- /usr/lib/systemd/system
이 파일은 보통 3개의 섹션으로 구성 된다.
- [Unit]
- [Service]
- [Install]
[2. Unit]
이 섹션에는 메타데이터 와 의존성 관해서 기술한다.
- Description
- Documentation
- Requires
# network.target : 네트워크 스택을 요구한다.
# network-online.target : 네트워크 연결이 실제로 가능한 상태 - Wants
- After
# network.target : 네트워크가 준비된 이후 실행하도록 한다.
# network-online.target : 네트워크 연결이 실제로 가능한 상태 - Before
[3. Service]
가장 중요한 부분으로, 서비스를 어떻게 실행할 지 정의한다.
- Type
# simple : 기본 값,
# forking :
# oneshot : - ExecStartPre
# ExecStart 전에 실행 - ExecStart
# 서비스 실행 시 수행 할 명령어
# systemctl start ... - ExecStartPost
# ExecStart 성공 시 실행 - TimeoutSec
# 서비스 시작/정지 시 대기시간
# 명시한 시간 내 처리되지 않으면 실패 처리 - ExecStop
# 서비스 중지 시 수행 할 명령어 ($MAINPID)
# systemctl stop ... - KillSignal
# ExecStop 이 실행 후에도 프로세스가 종료되지 않은 경우 실행
# 여기에 지정 한 시그널이 발생함. - TimeoutStopSec
# 여기에 지정 한 시간 이후에도 프로세스가 종료되지 않은 경우 SIGKILL 로 강제 종료 - ExecStopPost
# ExecStop ~ KillSignal 이 후 가장 마지막에 실행 됨. - Restart
# 프로세스 종료 시 재시작 여부 지정
# no : 재시작 안함
# always : 항상 재시작
# on-failure : 비정상 종료 시에만 재시작
# on-success : 정상 종료 시에만 재시작 - RestartSec
# Restart 전 대기 시간 - User
- Group
- WorkingDirectory
- Environment
- EnvironmentFile
- StandardOutput
- StandardError
- LimitCore
# 비정상 종료 시 core 파일을 생성 하기 위함
# infinity
systemctl 의 start / stop / restart 관점으로 실행 흐름은
- start : ExecStartPre -> ExecStart -> ExecStartPost
- stop : ExecStop -> KillSignal -> ExecStopPost
## ExecStop 과 KillSignal 이 모두 정의 되었다면, ExecStop 후 KillSignal 도 발생 함.
## 가급적 하나만 명시하는게 좋음, (KillSignal 이 명시하지 않은 경우, SIGKILL 발생) - restart : stop 후 start
Restart 에서 on-failure 인 경우는
- 프로세스의 exit code 가 0 이 아니거나
- 아래와 같은 signal 에 의해 종료 된 경우 (core dump 를 남길 수 있는 레벨인 경우)
# SIGSEGV
# SIGABRT
# SIGPIPE
# SIGILL
# SIGBUS
# SIGKILL
# SIGQUIT - 아래는 정상 종료료 간주한다.
# SIGTERM
# SIGINT
# SIGHUP
[4. Install]
이 섹션에는 서비스를 어떻게 설치해서 어떤 상황에서 자동 실행할지 구체적으로,
# systemctl enable ... 시, 어떤 target 에 심볼릭 링크로 묶일 지 정의한다.
- WantedBy
# multi-user.target : 콘솔 기반(서버 등) 에서 실행 할 서비스
# graphical.target - RequiredBy
- Alias
[5. 기타]
.service 파일을 수정 한 후 에는 반드시 systemctl daemon-relaod 를 호출하여 업데이트 해주도록 한다.
'서버 관리 > 리눅스' 카테고리의 다른 글
update-alternatives (0) | 2025.08.30 |
---|---|
리눅스 크래시 로그 파악하기 (1) | 2025.08.26 |
ulimit (0) | 2025.07.03 |
리눅스 패키지 관리 (0) | 2025.05.01 |
samba 서버 설치 (0) | 2025.05.01 |