【发布时间】: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
【问题讨论】:
-
@pjz 我认为它不同,因为脚本可以从命令行运行,但不能在 systemd 服务运行时运行。