Beaglebone Black에서 재부팅 후 쉘 스크립트 실행

Beaglebone Black에서 재부팅 후 쉘 스크립트 실행

저는 Debian 8.6에서 작동하는 beaglebone black을 사용하고 있습니다. 재부팅 후 프로그램을 시작하고 싶습니다. 나는 그것을 시도했지만 crontab성공하지 못했습니다.

@reboot sleep 60 && /home/debian/acspilot/start.sh

이 프로그램은 config.sh 파일과 acsp.py python 스크립트로 구성됩니다. 모든 코드는 터미널에서 제대로 작동합니다. 코드는 다음과 같습니다.

start.sh:

#!/bin/sh
sudo su
cd home/debian/acs/
./config_pins.sh
python acsp.py

config_pins.sh:

#! /bin/bash
cd /sys/devices/platform/bone_capemgr
File=slots
if grep -q "Override Board Name,00A0,Override Manuf,univ-emmc" "$File"; 
then    
        cd
        echo -e "\nHooray!! configuration available"
        echo -e "\n UART 4 configuration p9.11 and p9.13"
        sudo config-pin P9.11 uart
        sudo config-pin -q P9.11
        sudo config-pin P9.13 uart
        sudo config-pin -q P9.13
        echo -e "\n UART 1 configuration p9.26 and p9.24"
        sudo config-pin P9.24 uart
        sudo config-pin -q P9.24
        sudo config-pin P9.26 uart
        sudo config-pin -q P9.26
        echo -e "\n UART 5 configuration p8.38 and p8.37"
        sudo config-pin P8.38 uart
        sudo config-pin -q P8.38
        sudo config-pin P8.37 uart
        sudo config-pin -q P8.37
        echo -e "\n UART configuration end" 
else    
        echo "Oops!!configuration is not available"
        echo "Please check uEnv.txt file and only disable HDMI"
fi

acsp.py:

import Adafruit_BBIO.PWM as PWM
import Adafruit_BBIO.UART as UART
import time
# UART communication begins
UART.setup("UART1")
# pwm begins
PWM.start("P9_14", 5,50)
ser = serial.Serial(port = "/dev/ttyO1", baudrate=9600)
ser.close()
ser.open()
while ser.isOpen():
      for i in range(1,99)
            print i
            ser.write(str(i)+"%")
            PWM.set_duty_cycle("P9_14", i)
            time.sleep(5)
ser.close()
UART.cleanup()
PWM.stop("P9_14")
PWM.cleanup()

답변1

스크립트에는 sudo 라인이 있으며 루트가 아닌 사용자에게 시간이 맞춰지면 쉘이 자체적으로 실행될 수 없습니다. 대신, 먼저 루트가 되어야 합니다.

sudo su -

그런 다음

crontab -e

루트 사용자로 작업 라인 추가

관련 정보