리눅스 서버에서 어떤 스크립트나 프로그램을 부팅 시 자동으로 실행하고 싶을 때가 있습니다.
예를 들어, 백그라운드에서 작동하는 크론 잡, 웹 서버, 데이터 수집 스크립트 등 말이죠.
이럴 때 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
로 자동 실행 설정
'개발 > 리눅스' 카테고리의 다른 글
[Linux] 리눅스 사용자 추가/삭제하는 방법 (0) | 2025.06.26 |
---|---|
[Linux] 서버 재부팅 없이 커널 업데이트하는 방법 (Livepatch) (0) | 2025.06.25 |
[Linux] journalctl 로그 조회하는 방법 (0) | 2025.06.23 |
[Linux] systemctl로 서비스 시작/중지/재시작 관리 (0) | 2025.05.18 |
[Linux] uptime, w 명령어로 시스템 부하 확인하기 (0) | 2025.05.17 |