我在 RPi3 上运行 Raspbian Jessie Lite。我在以下位置创建了一个文件/etc/systemd/system/autostart.service
:
[Unit]
Description=Application
[Service]
User=root
ExecStart=/home/pi/autostart.sh
[Install]
WantedBy=multi-user.target
该服务已正确启用并实际执行。这是我的启动脚本的源代码:
#!/bin/sh
aplay -c2 -r48000 -fS16_LE < /dev/zero &
chmod 1777 /tmp
hciconfig hci0 up
/home/pi/bin/./app
我的应用程序已执行,但行为怪异,而从根控制台运行它则/home/pi/bin/./app
不会出现任何问题。此外,脚本当然autostart.sh
会一直执行,直到我的应用程序结束。
为了解决这两个问题,我尝试在后台运行它,并&
在最后添加。或者只是尝试将输出重定向到文件添加&> /home/pi/log.txt
。在这两种情况下,我的应用程序都不再执行!
我错过了什么?
答案1
你可能会忽略这些东西:
添加
Type=oneshot
到 [Service] 部分。无需将其置于后台,并且将输出重定向到文件无论如何在配置文件中都不起作用。输出已使用密钥捕获并重定向StandardOutput
,默认将其发送到 systemd 日志。另外,仅仅创建文件并不能使它执行,你还必须启用它。运行
systemctl enable autostart
我还要指出的是,您最终会/home/pi/bin/app
以 root 身份运行,这可能不是您想要的安全性。除非需要以 root 身份运行,否则请考虑以其他用户身份运行您的应用程序。