Jetson & 머신러닝

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

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

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초 지난 시점 이후 부터 키입력을 검사하도록 한다.

반응형