YOGYUI

Raspberry Pi - 부팅 시 터미널(LXTerminal)로 파이썬 스크립트 자동실행 본문

Hardware/Raspberry Pi

Raspberry Pi - 부팅 시 터미널(LXTerminal)로 파이썬 스크립트 자동실행

요겨 2021. 7. 10. 22:09
반응형

라즈베리파이 OS 부팅시에 파이썬 스크립트를 터미널(LXterminal)에서 자동으로 실행하는 방법을 알아보자

자동실행 방법은 여러개가 있는데, 본 포스트에서는 /etc/xdg/autostart 경로에 .directory 파일을 생성하는 방법을 써보도록 한다

 

[구동환경]

Motherboard Raspberry Pi 4 Model B Rev 1.2
Kernel Linux 5.4.79-v7I+ (armv7I)
Operating System Raspbian GNU/Linux 10 (buster)
LXTerminal Version 0.3.2

 

1. 파이썬 스크립트 작성

테스트를 위해 바탕화면에 test.py라는 이름의 파일을 작성한다 (nano 편집기 사용)

pi@respberrypi:~ $ sudo nano Desktop/test.py
import datetime

now = datetime.datetime.now()

print("Auto-Start Test@{}".format(now.strftime("%Y-%m-%d %H:%M:%S")))

nano editor로 테스트 스크립트 작성
스크립트 동작 테스트

 

2. .directory 파일 작성

위에서 만든 파이썬 스크립트 파일을 라즈베리파이 OS 부팅 시 터미널(LXterminal)에서 자동 실행될 수 있도록 스크립트를 작성해보자

경로는 /etc/xdg/autostart

파일확장자는 .desktop

해당 경로내에 존재하는 .desktop 파일 내 스크립트를 OS 부팅 후 자동으로 실행하게 된다

 

역시 나노에디터로 다음과 같이 작성해보자

pi@respberrypi:~ $ sudo nano /etc/xdg/autostart/test.desktop
[Desktop Entry]
Encoding=UTF-8
Exec=lxterminal --command "/bin/bash -c '/bin/python3 /home/pi/Desktop/test.py; read -p \"Press enter to continue\"; /bin/bash'"

실제로 실행할 구문을 Exec= 뒤에 적어주면 된다

파이썬 스크립트(test.py) 실행 후 터미널 창이 바로 닫히는 것을 방지하기 위해 read 명령어로 키보드 입력을 기다릴 수 있게 했다

 

LXterminal의 사용법은 lxterminal --help 를 참고하자

lxterminal --help

 

3. 재시작

OS를 재시작하면 다음과 같이 터미널 창이 자동으로 실행된 것을 확인할 수 있다

터미널 자동 실행 결과

 

4. 터미널 타이틀 설정

test.desktop 파일을 오픈한 후 다음과 같이 LXterminal 인자를 추가하면 실행되는 터미널 창의 타이틀을 변경할 수 있다

(default는 bash' 로 표기되는데, 같은 방식으로 여러 개 띄울 경우 타이틀을 지정해 서로 구분할 수 있다)

[Desktop Entry]
Encoding=UTF-8
Exec=lxterminal --title=TEST --command "/bin/bash -c '/bin/python3 /home/pi/Desktop/test.py; read -p \"Press enter to continue\"; /bin/bash'"

 

다시 재시작해보자

터미널 타이틀 변경

터미널 창의 타이틀이 제대로 변경되었고, 작업표시줄에서도 확인할 수 있다

 

당연한 이야기지만, 파이썬 스크립트 뿐만 아니라 다양한 동작을 부팅 시에 자동으로 실행할 수 있으니 유용하게 활용할 수 있다

 

끝~!

 

[참고]

https://raspberrypi.stackexchange.com/questions/8734/execute-script-on-start-up

https://bbs.archlinux.org/viewtopic.php?id=191187

https://stackoverflow.com/questions/21620406/how-do-i-pause-my-shell-script-for-a-second-before-continuing

반응형
Comments