【问题标题】:ts_calibrate fails to run from systemd scriptts_calibrate 无法从 systemd 脚本运行
【发布时间】:2015-01-06 23:02:53
【问题描述】:

我有一个由 systemd 在启动时运行的脚本。它运行我的应用程序,如果用户退出应用程序,脚本运行 ts_calibrate,完成后它再次运行我的应用程序。在 Angstrom 上运行良好,但在运行 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_calibrate 无法运行。我收到以下错误:-

ts_open: 没有这样的文件或目录

如果我以 root 身份登录,那么我可以从命令行运行脚本,一切都会按预期运行。
如果从命令行输入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

.
unname -a
Linux beaglebone 3.8.13-bone67 #1 SMP Wed Sep 24 21:30:03 UTC 2014 armv7l GNU/Linux

【问题讨论】:

标签: linux bash systemd


【解决方案1】:

似乎在执行 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    相关资源
    最近更新 更多