Raspbian Jessie:启动脚本不起作用

Raspbian Jessie:启动脚本不起作用

我在 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

你可能会忽略这些东西:

  1. 添加Type=oneshot到 [Service] 部分。无需将其置于后台,并且将输出重定向到文件无论如何在配置文件中都不起作用。输出已使用密钥捕获并重定向StandardOutput,默认将其发送到 systemd 日志。

  2. 另外,仅仅创建文件并不能使它执行,你还必须启用它。运行

    systemctl enable autostart
    

我还要指出的是,您最终会/home/pi/bin/app以 root 身份运行,这可能不是您想要的安全性。除非需要以 root 身份运行,否则请考虑以其他用户身份运行您的应用程序。

相关内容