[Linux] 부팅 시 자동 실행 설정 방법 (systemd 서비스 만들기)

리눅스 서버에서 어떤 스크립트나 프로그램을 부팅 시 자동으로 실행하고 싶을 때가 있습니다.
예를 들어, 백그라운드에서 작동하는 크론 잡, 웹 서버, 데이터 수집 스크립트 등 말이죠.

이럴 때 systemd 서비스 유닛 파일을 만들면
부팅 시 자동으로 원하는 작업이 실행되도록 설정할 수 있습니다.

  • systemd 서비스 유닛의 구조
  • 직접 유닛 파일을 작성하는 방법
  • 자동 실행 설정 및 테스트 방법

1. systemd 유닛 파일 기본 구조

유닛(Unit) 파일은 일반적으로 /etc/systemd/system 경로에 생성합니다.

[Unit]
Description=My Custom Script
After=network.target

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

[Install]
WantedBy=multi-user.target

 

항목 설명:

  • Description: 서비스 설명
  • After: 어떤 서비스 이후에 실행될지 지정
  • ExecStart: 실행할 명령 (스크립트 경로 등)
  • Restart: 프로세스가 죽었을 때 자동 재시작 여부
  • User: 어떤 사용자 권한으로 실행할지
  • WantedBy: 부팅 단계에서 이 서비스가 포함될 대상

 

2. 유닛 파일 생성 및 권한 설정

sudo nano /etc/systemd/system/myscript.service

위 명령어로 유닛 파일을 만들고, 앞서 본 내용을 붙여넣습니다.

파일을 저장한 뒤에는 다음 명령어로 systemd에 반영해야 합니다:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload

 

3. 서비스 시작 / 중지 / 상태 확인

sudo systemctl start myscript.service
sudo systemctl stop myscript.service
sudo systemctl status myscript.service

현재 서비스가 잘 작동하는지 확인합니다.

 

4. 부팅 시 자동 실행 설정

sudo systemctl enable myscript.service

이제 시스템이 부팅될 때 자동으로 실행됩니다.

필요할 경우 자동 실행을 해제할 수도 있어요:

sudo systemctl disable myscript.service

 

5. 로그 확인은 journalctl

journalctl -u myscript.service

서비스 실행 결과나 오류 로그를 확인할 수 있습니다.

 

 

자동 실행 설정으로 더 안정적인 시스템 운영하기

systemd 유닛 파일을 직접 만들어 자동 실행을 설정하면
스크립트나 애플리케이션을 항상 원하는 상태로 유지할 수 있습니다.

테스트 환경에서는 수동 실행으로 점검하고,
운영 환경에서는 enable 명령으로 자동 실행을 설정해두면
예상치 못한 재부팅 상황에도 안심할 수 있죠.

 

요약:

  • 유닛 파일은 /etc/systemd/system/에 생성
  • ExecStart 경로 설정 주의
  • daemon-reload 후 적용 필수
  • enable로 자동 실행 설정