2014-11-10 4 views
-2

시작시 systemd가 실행하는 스크립트가 있습니다. 그것은 내 응용 프로그램을 실행합니다. 사용자가 응용 프로그램을 종료하면 스크립트는 ts_calibrate를 실행하고 완료되면 다시 내 응용 프로그램을 실행합니다. Angstrom에서는 잘 작동하지만 데비안을 실행하는 Beaglebone Black에서는 작동하지 않습니다.ts_calibrate가 systemd 스크립트에서 실행되지 않습니다.

내 mita.sh 스크립트

while [ 1 ]; do 
     if [ -e /etc/pointercal ]; then 
       echo "Pointercal exists" 
       ./mita6 -platform linuxfb -plugin evdevtouch:/dev/input/event1 
       echo "Quit mita6" 
     else 
       echo "No pointercal" 
       ts_calibrate 
       echo "Quit ts_calibrate" 
       ./mita6 -platform linuxfb -plugin evdevtouch:/dev/input/event1 
     fi 
echo "Calibrating..." 
ts_calibrate 
echo "Calibration Done." 
sleep 2 
done 

시스템이 부팅 지금, 내 애플 확인을 시작하지만 종료 할 때 응용 프로그램의 ts_calibrate 실행되지 않습니다. 내가 루트로 로그인 할 경우, 내가 명령 줄에서 스크립트를 실행할 수 있습니다,

ts_open: No such file or directory

하고 모든 것이 예상대로 작동 - : 나는 다음과 같은 오류가 발생합니다.
명령 줄에서 sudo ts_calibrate을 입력하면 동일한 오류가 발생합니다.
누군가 나에게 무슨 일이 일어나는지 이해하도록 도와 줄 수 있습니까?
root로 ssh를 사용하면 스크립트를 성공적으로 실행할 수 있지만 sudo를 실행하면 ts_calibrate를 실행할 수있는 권한이없는 것 같습니다! systemd도 올바른 권한을 가지고 있지 않습니다!

감사합니다.
제임스.

.
.
.
systemd 서비스

#!/bin/sh - 

[Unit] 
Description=My Script 

[Service] 
USER=root 
WorkingDirectory=/home/root 
ExecStart=/bin/sh -c 'source /etc/profile ; /home/root/mita.sh' 
After=dropbear.service 
Type=oneshot 
RemainAfterExit=yes 

[Install] 
WantedBy=multi-user.target 

.
끝나면 uname -a 리눅스 beaglebone 3.8.13-bone67 # 1 SMP 수요일 9월 24일 세계 협정시 21시 30분 3초 2014
GNU/리눅스 armv7l

+0

이이 http://stackoverflow.com/questions/8397680/tslib-not-creating-device와 동일 할 수 있는가? – pjz

+0

@pjz 스크립트가 명령 줄에서 작동하기 때문에 systemd 서비스에서 실행될 때가 아니라고 생각합니다. – jas99

답변

0

환경 변수가 전달되지 않은, 보인다, ts_calibrate 이렇게 실행 된 경우 나는 그들이 설정되어 통과되었는지 확인해야했다.
마지막 작업 스크립트는 다음과 같다 : -

export TSLIB_CONFFILE=/etc/ts.conf 
export TSLIB_FBDEVICE=/dev/fb0 
export TSLIB_TSDEVICE=/dev/input/event1 

while [ 1 ]; do 
     if [ -e /etc/pointercal ]; then 
       echo "Pointercal exists" 
       /home/root/mita6 -platform linuxfb -plugin evdevtouch:/dev/input/event1 
       echo "Quit mita6" 
     else 
       echo "No pointercal" 
       killall mita6 
       sudo -E /usr/bin/ts_calibrate 
       echo "Quit ts_calibrate" 
       /home/root/mita6 -platform linuxfb -plugin evdevtouch:/dev/input/event1 
     fi 
echo "Calibrating..." 
killall mita6 
sudo -E /usr/bin/ts_calibrate 
echo "Calibration Done." 
sleep 2 
done