Supervisor로 백그라운드 프로세스 자동 재시작 관리를 도입한 건 병원 예약 알림을 보내는 Python 스크립트가 가끔 예외로 죽어도 아무도 몰랐던 문제를 해결하기 위해서입니다. nohup python3 notify.py &로 실행해두면 죽으면 그냥 죽어버렸습니다. Supervisor를 쓰면 프로세스가 죽어도 자동으로 재시작하고, 로그도 자동으로 관리해줍니다.
sudo apt install supervisor
# 상태 확인
sudo systemctl status supervisor
sudo supervisorctl status
sudo nano /etc/supervisor/conf.d/notify-bot.conf
[program:notify-bot]
; 실행할 명령어 (절대 경로 필수)
command=/usr/bin/python3 /var/www/scripts/notify.py
; 실행 디렉토리
directory=/var/www/scripts
; 실행 사용자
user=www-data
; 자동 시작 (supervisor 시작 시)
autostart=true
; 비정상 종료 시 자동 재시작
autorestart=true
; 재시작 전 대기 시간 (초)
startsecs=5
; 최대 재시작 횟수 (0=무제한)
startretries=10
; 로그 파일
stdout_logfile=/var/log/supervisor/notify-bot.log
stderr_logfile=/var/log/supervisor/notify-bot-error.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=3
# 설정 다시 읽기
sudo supervisorctl reread
sudo supervisorctl update
# 프로그램 제어
sudo supervisorctl start notify-bot
sudo supervisorctl stop notify-bot
sudo supervisorctl restart notify-bot
# 상태 확인
sudo supervisorctl status
# 실시간 로그 확인
sudo supervisorctl tail -f notify-bot
# 전체 관리 UI (선택)
# /etc/supervisor/supervisord.conf 에서 inet_http_server 활성화 후
# http://서버IP:9001 접속
Supervisor는 cron처럼 주기 실행이 아니라 항상 실행 중이어야 하는 데몬 프로세스 관리에 적합합니다. systemd 서비스를 만들기 어려운 Python 스크립트나 Node.js 앱에도 쉽게 적용할 수 있습니다.
AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)