--- title: systemctl — 서비스 관리 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: systemd 서비스를 시작·중지·재시작하고 상태를 확인하는 명령어. 리눅스 운영의 중심. tags: 프로그램, 서비스 및 프로세스 관리, systemctl --- **💬 "systemctl 명령어"** systemctl은 **서비스(유닛)를 제어**합니다. 시작·중지·재시작·부팅 등록이 모두 여기 있습니다. 장애 대응에서는 status로 상태와 최근 로그를 함께 봅니다. - **개념**: systemd 유닛을 관리합니다(서비스, 타이머, 소켓 등). - **status**: 활성 상태, 마지막 종료 코드, 최근 로그를 보여줍니다. - **enable/disable**: 부팅 시 자동 시작 여부를 설정합니다. - **daemon-reload**: 유닛 파일을 수정한 뒤 반드시 실행합니다. ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | start/stop/restart | 서비스 시작/중지/재시작 | | enable --now | 부팅 등록과 즉시 시작을 함께 | | status | 상태와 최근 로그 확인 | | reload | 중단 없이 설정을 다시 읽게 합니다(지원하는 서비스만) | ## 필수 명령어 조합 3가지 - `systemctl status myapp --no-pager` — 서비스 상태와 최근 로그 확인 - `systemctl restart myapp && systemctl is-active myapp` — 재시작 후 동작 확인 - `systemctl enable --now myapp` — 부팅 등록 + 즉시 시작 **💬 "실제 운영 로그를 예로 든 예시 하나 부탁해"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · 상태 확인 현재 활성 상태와 마지막 오류를 봅니다. ``` systemctl status myapp --no-pager ``` ### 2단계 · 설정 반영 유닛을 수정했다면 다시 읽게 하고 재시작합니다. ``` systemctl daemon-reload && systemctl restart myapp ``` ### 3단계 · 검증 활성 상태와 로그를 확인합니다. ``` systemctl is-active myapp && journalctl -u myapp -n 20 --no-pager ``` ## 실무에서는 이렇게 씁니다 ### 1. 설정 변경 반영 **상황** — myapp 유닛의 환경변수를 바꿨습니다. ``` systemctl daemon-reload && systemctl restart myapp ``` **결과** — 새 설정으로 서비스가 재시작됩니다. **포인트** — daemon-reload를 빼먹으면 이전 설정이 그대로 남습니다. ### 2. 부팅 후 서비스가 안 뜸 **상황** — 재부팅하면 서비스가 내려가 있습니다. ``` systemctl is-enabled myapp && systemctl enable myapp ``` **결과** — 비활성 상태였다면 enable로 부팅 등록합니다. **포인트** — is-enabled로 자동 시작 여부를 먼저 확인합니다. ## 주의할 점 - restart는 잠깐 서비스가 끊깁니다. 무중단이 필요하면 reload 지원 여부를 확인합니다. - stop 후 start를 잊으면 서비스가 내려간 채 남습니다. - 유닛 파일을 손으로 고치면 반드시 daemon-reload를 실행합니다. - 운영 중 서비스 중지는 사용자 승인 후 진행합니다. ## 실제 실행 화면 서비스 상태와 최근 로그를 확인한 결과입니다. ![systemctl 명령어 실행 결과: 서비스 상태](https://games.cursorai.co.kr/assets/systemctl-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/services/systemctl.html