我有一个由 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 似乎也没有正确的权限!
问候,
詹姆斯。
.
.
.
系统服务
#!/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