Haru Utils

SYSTEMD

서비스가 시작되지 않거나 failed일 때

systemctl 상태, 현재 부팅 로그, 실제 unit 내용과 문법을 확인해 재시작 전에 원인을 찾습니다.
systemctl failed서비스 시작 실패journalctlunit 오류daemon-reload
환경systemd 기반 Linux
분류서비스
검토일2026-08-27
진행5단계 · 조회 우선

SAFE OPERATING BOUNDARY

중단·복구 기준부터 확인하세요

STOP CONDITIONS

여기서는 멈추세요

  • 명령 출력의 서버·서비스·경로가 예상 대상과 다르면 변경 단계로 넘어가지 않습니다.
  • 현재 접속 세션, 백업 또는 콘솔 복구 경로를 확보하지 못했다면 상태 변경 명령을 실행하지 않습니다.
ROLLBACK

복구 기준

변경 전 설정과 출력값을 기록하고, 예상과 다른 결과가 나오면 추가 변경을 멈춘 뒤 승인된 운영 복구 절차로 되돌립니다.

ESCALATION PACK

담당자에게 전달할 자료

  • 장애 발생 시각·정상화 시각과 원문 오류 메시지
  • 민감정보를 제거한 조회 명령 출력과 변경 전후 차이
  • 조치 후 동일 조건으로 수행한 재검증 결과
공식 문서와 읽기 전용 진단 명령을 우선 검토했습니다. 실제 서버에서는 설치된 버전의 --help와 man을 함께 확인하세요.

BEFORE YOU START

이런 증상에서 시작합니다

  • Active: failed
  • 자동 재시작 반복
  • 부팅 후 서비스 미기동

CHECK THE BRANCH

놓치기 쉬운 원인 분기

01

Start request repeated too quickly

짧은 시간에 반복 실패해 start limit에 도달한 상태입니다. 먼저 최초 실패 원인을 해결한 뒤 reset-failed 여부를 판단합니다.

02

터미널에서는 실행되는 경우

systemd의 User, Group, WorkingDirectory, Environment, PATH가 로그인 셸과 다른지 systemctl show와 cat으로 비교합니다.

03

의존 unit이 실패한 경우

After는 순서만 지정하며 기동 필요성을 보장하지 않습니다. Requires·Wants와 실패한 의존 unit을 함께 확인합니다.

FOLLOW THE FLOW

순서대로 확인하기

1
조회시스템을 변경하지 않는 확인 단계

실패 서비스와 상태 확인

SERVICE_NAME을 실제 unit 이름으로 바꿉니다.

전체 실패 unit
systemctl --failed --no-pager
대상 서비스 상세
systemctl status SERVICE_NAME --no-pager -l
결과 읽기

Result, Exit Code, 마지막 로그 줄을 기록합니다.

다음 판단

설정 오류인지 실행 파일 오류인지 가설을 세웁니다.

2
조회시스템을 변경하지 않는 확인 단계

현재 부팅 로그 확인

이전 장애 기록과 섞이지 않도록 -b를 사용합니다.

현재 부팅의 서비스 로그
journalctl -u SERVICE_NAME -b -n 150 --no-pager
warning 이상 로그
journalctl -u SERVICE_NAME -b -p warning --no-pager
결과 읽기

첫 번째 오류를 우선 확인하고 뒤따르는 연쇄 오류와 구분합니다.

다음 판단

오류가 가리키는 파일·포트·권한을 점검합니다.

3
조회시스템을 변경하지 않는 확인 단계

실제로 적용된 unit 확인

drop-in 설정까지 합쳐진 내용을 확인합니다.

unit과 drop-in 내용
systemctl cat SERVICE_NAME
주요 속성
systemctl show SERVICE_NAME -p FragmentPath -p User -p ExecStart -p Restart
결과 읽기

편집한 파일과 실제 FragmentPath가 같은지 확인합니다.

다음 판단

변경 전 원본과 수정 내용을 기록합니다.

4
조회시스템을 변경하지 않는 확인 단계

unit 문법 검증

경로를 실제 unit 파일로 바꿉니다.

unit 문법 검사
systemd-analyze verify /etc/systemd/system/SERVICE_NAME.service
결과 읽기

Unknown key, 실행 파일 부재, 의존성 순환 등을 수정합니다.

다음 판단

검증 오류가 없어야 재로딩합니다.

5
변경데이터·서비스 상태가 달라질 수 있는 단계

설정을 다시 읽고 재시작

서비스 영향과 unit 이름을 다시 확인합니다.

변경 단계입니다. 실행 전 대상 이름과 경로, 서비스 중단 영향, 복구 방법을 다시 확인하세요.
unit 재로딩
sudo systemctl daemon-reload
서비스 재시작
sudo systemctl restart SERVICE_NAME
최종 상태
systemctl is-active SERVICE_NAME && systemctl status SERVICE_NAME --no-pager
결과 읽기

active 상태와 실제 애플리케이션 헬스체크를 모두 확인합니다.

다음 판단

실패하면 추가 재시작보다 2단계 로그로 돌아갑니다.

PRIMARY REFERENCES

공식 문서

배포판과 버전에 따라 옵션·로그 위치가 다를 수 있습니다. 실행 전 서버의 --help와 로컬 매뉴얼을 함께 확인하세요.

도구 빠른 검색

최근 사용한 도구를 다시 열거나, 이름과 기능으로 검색하세요.

검색어와 도구의 입력·결과는 저장하지 않습니다.

↑↓ 이동 · Enter 열기 · Esc 닫기