Jetson & 머신러닝

Jetson Xavier 안전 종료 버튼 실행(3)

아크리엑터 2024. 7. 1. 03:03
반응형

updated 2024.7.7   아래 것이 더 나아서 업데이트 합니다. 아래 글은 다른 용도로 사용할 수있습니다.

https://makejarvis.tistory.com/171

 

아주 간단한, 우분투 전원버튼으로 자동 Shutdown 종료 방법

기존에는 별도의 버튼을 만들어서, 버튼이 눌리면 이를 인식해서 shutdown 명령을 실행하게 하는 것을 만들었다. 그런데, 이렇게 뻘짓을 할 필요없이 기본적인 설정으로 쉽게 가능하다. 별도의 버

makejarvis.tistory.com

------------------------------------------------------------------------------------------------------------------------

 

1. 아래 파일을 만든다.

$ sudo vi /etc/init.d/safe_shutdown

#!/bin/sh
#
# cd /etc/init.d
# sudo vi safe_shutdown
#
# sudo chmod 755 safe_shutdown
# 

case "$1" in
  start)
    eval "cd /home/user_id/bot/safe_shutdown/"
    echo "Starting safe_shutdown....."
    eval "./run_safe_shutdown.sh &"
    ;;
  stop)
    echo "safe_shutdown stopped..."
    eval "pkill -9 -f safe_shutdown"
    ;;
  *)
  echo "Usage: /etc/init.d/safe_shutdown {start|stop}"
  exit 1
  ;;
esac

exit 0

 

2. bot/safe_shutdown/폴더 밑에 아래의 파일을 만들었다.

$ vi run_safe_shutdown.sh

!/bin/sh -e
/usr/bin/python3 /home/user_id/bot/safe_shutdown/safe_shutdown.py
$ vi safe_shutdown.py

import Jetson.GPIO as GPIO
import time
import os


print("-----------------------------------------")
print("      Starting  SafeShutdown Process")
print("-----------------------------------------")

pin = 23

GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.IN)

time.sleep(60)
try:
   while True:
      if GPIO.input(pin) == True:
         print("[!] safe shutdown button pressed...")
         os.system("sudo shutdown now")
         time.sleep(1)
except KeyboardInterrupt:
   GPIO.cleanup()

 

3. 잘 실행되는지를 시험해보자.

$ sudo ./safe_shutdown start
Starting safe_shutdown.....
-----------------------------------------
      Starting  SafeShutdown Process
-----------------------------------------

$ sudo ./safe_shutdown stop
safe_shutdown stopped...
Killed

 

4. 상시 실행되게 하는 것은 아래 명령으로..

$ sudo update-rc.d safe_shutdown defaults

이제 23번 핀으로 전원Off 기능이 작동되도록 하였다. 최초 부팅 후 60초 지난 시점 이후 부터 키입력을 검사하도록 한다.

반응형