ts_calibrate无法从systemd脚本运行

时间:2014-11-10 15:34:14

标签: linux bash systemd

我有一个在启动时由systemd运行的脚本。它运行我的应用程序,如果用户退出应用程序,脚本运行ts_calibrate,并且当它完成后,它再次运行我的应用程序。在Angstrom工作得很好,但在Beaglebone Black上运行的Debian却没有。

我的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:没有这样的文件或目录

如果我以root身份登录,那么我可以从命令行运行脚本,一切都按预期工作 如果,从命令行我输入sudo ts_calibrate然后我得到相同的错误 有人能帮助我理解这里发生的事情吗? 如果我以root身份登录,我可以成功运行脚本,但如果我然后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
Linux beaglebone 3.8.13-bone67#1 SMP Wed Sep 24 21:30:03 UTC 2014 armv7l GNU / Linux

1 个答案:

答案 0 :(得分: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