Я управляю 8 сервоприводами, используя ШИМ-выходы на BeagleBone.При запуске имена ШИМ назначаются динамически, поэтому они меняются от загрузки к загрузке, чтобы узнать, какой вывод соответствует тому, какой ШИМ я написал этот сценарий:
#!/bin/sh
# match BeagleBone PWMCHIP{n} with available pwm controllers
for i in $(/bin/ls /sys/class/pwm); do
link=$(/bin/readlink /sys/class/pwm/$i)
case "$link" in
*48300100*) BBPWM0=$i;;
*48300200*) BBPWM1=$i;;
*48302200*) BBPWM2=$i;;
*48304100*) BBPWM3=$i;;
*48304200*) BBPWM4=$i;;
esac
done
export BBPWM0
export BBPWM1
export BBPWM2
export BBPWM3
export BBPWM4
echo "PWM0 = $BBPWM0" > /home/ormund/servo.log
/home/ormund/servo-server
Система работает при запускеэто из командной строки, серво-сервер прослушивает сетевой порт и корректно перемещает сервоприводы в ответ на удаленные команды, но если я запускаю это из systemd при загрузке, происходит сбой, BBPWM0 - пустая строка, и сервер не может запуститься,Что я делаю не так?