起動時に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