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

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

by 운따돈 2025. 8. 16.

리눅스에서 서비스 자동 시작이란, 서버가 재부팅되었을 때 특정 프로그램이나 데몬이 자동으로 실행되도록 설정하는 것을 말합니다.


예를 들어 웹 서버(Apache, Nginx), 데이터베이스(MySQL, PostgreSQL), 애플리케이션 서버(Node.js, Spring Boot) 같은 서비스는 매번 수동으로 실행하는 대신 자동 시작을 설정하는 것이 일반적입니다.


이를 통해 서버 재부팅 시 서비스가 중단되는 사고를 방지하고, 관리 효율성을 높일 수 있습니다.


systemd와 서비스 관리

최근 대부분의 리눅스 배포판(Ubuntu 16.04+, CentOS 7+, Debian 8+)은 systemd를 서비스 관리 도구로 사용합니다.
systemd는 서비스 시작, 중지, 재시작, 자동 실행 설정까지 모두 가능하며, systemctl 명령어로 조작합니다.


서비스 자동 시작 확인

현재 특정 서비스가 부팅 시 자동 시작되도록 설정되어 있는지 확인하려면 다음을 입력합니다.

sudo systemctl is-enabled 서비스명

 

예)
sudo systemctl is-enabled nginx

결과가 enabled면 자동 시작, disabled면 자동 시작이 꺼져 있는 상태입니다.


서비스 자동 시작 설정

부팅 시 자동 실행되도록 하려면 enable 명령어를 사용합니다.

sudo systemctl enable 서비스명

 

예)
sudo systemctl enable nginx

이렇게 하면 다음 부팅 때 nginx 서비스가 자동으로 실행됩니다.


서비스 자동 시작 해제

특정 서비스가 부팅 시 자동으로 실행되지 않게 하려면 disable 명령어를 사용합니다.

sudo systemctl disable 서비스명

 

예)
sudo systemctl disable nginx


수동 실행과 차이점

자동 시작을 설정해도, 현재 실행 중이지 않다면 즉시 실행되지는 않습니다.
즉, enable은 부팅 시 동작만 설정하는 것이고, 지금 바로 실행하려면 다음을 입력해야 합니다.

sudo systemctl start 서비스명


사용자 정의 서비스 자동 시작

직접 만든 프로그램이나 스크립트를 부팅 시 실행하려면 서비스 등록부터 해야 합니다.

  1. 서비스 파일 생성
    sudo nano /etc/systemd/system/myapp.service
  2. 예시 내용
    [Unit]
    Description=My Application Service
    After=network.target

[Service]
ExecStart=/usr/bin/python3 /home/ubuntu/app.py
Restart=always
User=ubuntu
WorkingDirectory=/home/ubuntu

[Install]
WantedBy=multi-user.target

  1. 서비스 적용
    sudo systemctl daemon-reload
    sudo systemctl enable myapp.service
    sudo systemctl start myapp.service

이제 재부팅 시 자동으로 실행됩니다.


자동 시작 상태 전체 확인

모든 서비스의 자동 시작 상태를 확인하려면 다음 명령어를 사용합니다.

systemctl list-unit-files --type=service | grep enabled


문제 해결 팁

  1. 서비스 파일 오류 – ExecStart 경로가 잘못되면 자동 시작 실패
  2. 권한 문제 – 실행 사용자 권한 부족 시 작동 안 함
  3. 로그 확인 – sudo journalctl -u 서비스명 -b 로 부팅 시 로그 확인 가능
  4. 네트워크 의존성 – After=network.target 설정으로 네트워크 연결 후 실행

결론

리눅스 서비스 자동 시작 설정은 서버 안정성을 높이는 기본 작업입니다.
systemctl enable 명령어로 간단히 적용 가능하며, 직접 만든 프로그램도 서비스로 등록해 자동 실행할 수 있습니다.
특히 서버 운영 시 재부팅 후 서비스가 동작하지 않아 발생하는 장애를 예방하려면, 필수적으로 설정해두는 것이 좋습니다.