라즈베리파이에서 특정 작업을 자동화하고 싶을 때 crontab
을 떠올리기 쉽습니다. 하지만 crontab
의 @reboot
옵션은 시스템 부팅 즉시 스크립트를 실행하기 때문에, 데스크탑 환경이 완전히 로드된 후에 GUI 애플리케이션이나 특정 서비스가 실행되기를 원한다면 적합하지 않을 수 있습니다.
이번 가이드에서는 crontab
대신 라즈베리파이 데스크탑 환경(특히 LXDE)이 완전히 부팅된 후 특정 스크립트를 자동으로 실행하는 효과적인 방법들을 알려드립니다.
방법 1: 데스크탑 시작 프로그램 (.desktop 파일) 활용 (권장)
이 방법은 사용자가 데스크탑에 로그인하면 자동으로 스크립트를 실행해줘 가장 간단하고 직관적입니다.
1. .desktop
파일 생성:
다음 명령어로 ~/.config/autostart/
디렉토리에 .desktop
파일을 만드세요. 디렉토리가 없으면 자동으로 생성됩니다.
mkdir -p ~/.config/autostart
nano ~/.config/autostart/openwebui-autostart.desktop
2. .desktop
파일 내용 붙여넣기:
아래 내용을 복사하여 위 파일에 붙여넣고 저장하세요.
(저장: Ctrl + O
, Enter
/ 종료: Ctrl + X
)
[Desktop Entry]
Type=Application
Name=OpenWebUI 자동 시작
Comment=라즈베리파이 데스크탑 로그인 시 OpenWebUI 실행
Exec=/home/pi/openWebui_run.sh
Terminal=false
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
참고:
Exec=/home/pi/openWebui_run.sh
: 실행할 스크립트의 실제 경로로 바꿔주세요.Terminal=false
:openWebui_run.sh
스크립트가 이미 내부적으로 터미널을 여는 로직을 가지고 있기 때문에false
로 설정합니다. 이렇게 해야.desktop
파일이 다시 터미널을 열지 않습니다.
장점:
- 사용자가 데스크탑에 로그인하면 확실히 실행됩니다.
- 설정이 매우 간단합니다.
- GUI 설정에서도 확인 및 관리가 편리합니다.
방법 2: systemd
사용자 서비스 사용
더 강력하고 세밀한 제어가 필요하거나 안정성이 중요한 경우 systemd
사용자 서비스를 사용할 수 있습니다.
1. 서비스 파일 디렉토리 생성:
mkdir -p ~/.config/systemd/user
2. 서비스 파일 생성:
다음 명령어로 ~/.config/systemd/user/
경로에 .service
파일을 만드세요.
nano ~/.config/systemd/user/openwebui-user.service
3. 서비스 파일 내용 붙여넣기:
아래 내용을 복사하여 위 파일에 붙여넣고 저장하세요.
(저장: Ctrl + O
, Enter
/ 종료: Ctrl + X
)
[Unit]
Description=OpenWebUI 자동 시작 서비스
After=graphical-session.target
[Service]
ExecStart=/bin/bash -c "lxterminal -e 'sh -c \". /home/pi/venv_openWebui/bin/activate && open-webui serve; exec sh\"'"
# 만약 openWebui_run.sh 스크립트가 이미 터미널을 띄우는 로직을 포함한다면 아래 주석을 풀고 위 라인을 주석 처리:
# ExecStart=/home/pi/openWebui_run.sh
StandardOutput=file:/home/pi/openwebui_user_service.log
StandardError=file:/home/pi/openwebui_user_service_error.log
Restart=on-failure
[Install]
WantedBy=graphical-session.target
참고:
ExecStart
: 실행할 명령을 지정합니다. 위에 제시된 명령어는lxterminal
을 통해 터미널을 열고 그 안에서 가상 환경 활성화 및open-webui serve
를 실행합니다. 만약openWebui_run.sh
가 이미 터미널을 여는 로직을 가지고 있다면ExecStart=/home/pi/openWebui_run.sh
로 변경하는 것이 더 간단할 수 있습니다.StandardOutput
,StandardError
: 스크립트의 실행 로그를 지정된 파일에 저장하여 문제 발생 시 디버깅에 활용할 수 있습니다.
4. 서비스 활성화 및 시작:
systemctl --user enable openwebui-user.service # 부팅 시 자동 시작되도록 활성화
systemctl --user start openwebui-user.service # 지금 바로 서비스 시작 (테스트용)
장점:
- 시스템 부팅 과정 후반부에 더욱 안정적으로 실행됩니다.
- 오류 발생 시 자동 재시작 등 고급 설정이 가능합니다.
중요 사항:
- 스크립트 실행 권한:
openWebui_run.sh
파일에 실행 권한이 있는지 확인하세요. 없으면 다음 명령어로 권한을 부여할 수 있습니다:chmod +x /home/pi/openWebui_run.sh
- 스크립트 내부의
DISPLAY
환경 변수:openWebui_run.sh
스크립트 시작 부분에export DISPLAY=:0
가 포함되어 있는지 확인하세요. GUI 애플리케이션 실행 시 필요한 환경 변수입니다. sleep
대기 시간: 스크립트 내부에서sleep
명령어를 사용하여 충분한 대기 시간을 주는 것이 좋습니다. 이는 모든 데스크탑 서비스가 완전히 로드되는 시간을 확보하기 위함입니다.#!/bin/bash sleep 30 # 30초 대기 (필요에 따라 조절) # ... 나머지 스크립트 내용 ...
이 가이드가 라즈베리파이에서 원하는 스크립트를 데스크탑 부팅 후에 성공적으로 자동 실행하는 데 도움이 되기를 바랍니다!
Leave a Reply