-2

起動時にsystemdによって実行されるスクリプトがあります。ユーザーがアプリケーションを終了すると、スクリプトは ts_ calibration を実行し、それが完了すると、アプリケーションを再度実行します。オングストロームでは正常に動作しましたが、Debian を実行している Beaglebone Black では動作しませんでした。

私の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_ calibration の実行に失敗します。次のエラーが表示されます:-

ts_open: そのようなファイルまたはディレクトリはありません

root としてログインすると、コマンド ラインからスクリプトを実行でき、すべてが期待どおりに機能します。
コマンドラインから入力するsudo ts_calibrateと、同じエラーが発生します。
誰かがここで何が起こっているのかを理解するのを手伝ってくれますか?
root として ssh を実行するとスクリプトを正常に実行できますが、sudo を実行すると、ts_ calibration を実行する権限がないようです! 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
Linux beaglebone 3.8.13-bone67 #1 SMP Wed Sep 24 21:30:03 UTC 2014 armv7l GNU/Linux

4

1 に答える 1

0

環境変数が渡されなかったようです。
最終的な作業スクリプトは次のようになります:-

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
于 2014-11-12T10:00:30.153 に答える