본문 바로가기
리눅스의 모든 것

리눅스 서비스 자동 시작 설정 – 부팅 시 프로그램 자동 실행하기

by 운따돈 2025. 8. 16.

서비스 파일 경로 오류

원인
서비스 파일의 ExecStart 경로가 잘못되면 자동 시작이 실패합니다.
특히 프로그램 경로나 스크립트 위치가 변경되었는데 서비스 파일을 수정하지 않은 경우 자주 발생합니다.

 

해결 방법

  • sudo nano /etc/systemd/system/서비스명.service 로 서비스 파일 열기
  • ExecStart 절대 경로 확인 후 수정
  • 수정 후 sudo systemctl daemon-reload 실행

실행 권한 부족

원인
서비스 실행 계정이 해당 프로그램이나 디렉토리에 접근할 권한이 없는 경우입니다.

 

해결 방법

  • chmod +x 프로그램파일 로 실행 권한 부여
  • chown 사용자:그룹 디렉토리 로 소유자 변경
  • 서비스 파일의 User 항목을 적절한 계정으로 지정

의존 서비스 미실행

원인
네트워크나 데이터베이스처럼 해당 서비스가 실행되기 전에 필요한 의존 서비스가 준비되지 않은 경우입니다.

 

해결 방법

  • 서비스 파일에 After=network.target, Requires=mysql.service 같은 의존성 추가
  • sudo systemctl daemon-reload 후 재시작

네트워크 연결 지연

원인
서버 부팅 시 네트워크 연결이 늦어져 네트워크 기반 서비스 실행이 실패할 수 있습니다.

 

해결 방법

  • 서비스 파일에 After=network-online.target 추가
  • sudo systemctl enable NetworkManager-wait-online.service 로 네트워크 대기 활성화

환경변수 누락

원인
개발 환경에서 사용하던 환경변수가 서버 부팅 시 로드되지 않는 경우입니다.

 

해결 방법

  • 서비스 파일에 Environment="KEY=VALUE" 추가
  • 또는 /etc/environment 에 환경변수 등록

포트 충돌

원인
동일한 포트를 다른 서비스가 이미 사용 중이면 실행이 실패합니다.

 

해결 방법

  • sudo lsof -i :포트번호 로 점유 서비스 확인
  • 포트 변경 또는 충돌 서비스 중지

로그/데이터 디렉토리 미존재

원인
서비스에서 접근하는 디렉토리가 존재하지 않으면 실행이 중단됩니다.

 

해결 방법

  • mkdir -p 경로 로 디렉토리 생성
  • 접근 권한 확인 후 chmod, chown 설정

SELinux 보안 정책

원인
CentOS/RHEL에서 SELinux 설정이 서비스 실행을 차단할 수 있습니다.

 

해결 방법

  • sudo setenforce 0 으로 임시 해제 후 테스트
  • 필요 시 정책 수정 또는 영구 해제

서비스 파일 문법 오류

원인
[Unit], [Service], [Install] 구문이 틀리거나 잘못된 옵션이 들어간 경우입니다.

 

해결 방법

  • sudo systemd-analyze verify /etc/systemd/system/서비스명.service 로 문법 검사
  • 오류 수정 후 sudo systemctl daemon-reload

enable만 하고 start 안 함

원인
systemctl enable 은 부팅 시 실행만 예약하는 것이고, 지금 당장 실행되지는 않습니다.

 

해결 방법

  • sudo systemctl start 서비스명 으로 즉시 실행
  • 이후 sudo reboot 로 재부팅 테스트

마무리

리눅스 서비스 자동 시작 실패는 대부분 경로, 권한, 의존성 문제에서 발생합니다.
설정 후에는 반드시 systemctl status 서비스명 으로 상태를 확인하고, journalctl -u 서비스명 -b 로 부팅 시 로그를 확인하는 습관을 들이면 문제 해결 속도가 빨라집니다.
위 10가지를 순서대로 점검하면, 서비스 자동 시작 문제의 90% 이상은 해결할 수 있습니다.