我在 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
到[服務]部分。不需要將其置於後台,並且將輸出重定向到檔案在設定檔中無論如何都不起作用。輸出已被捕獲並使用StandardOutput
金鑰重定向,預設將其發送到 systemd 日誌。另外,僅僅建立文件並不會執行,您還必須啟用它。跑步
systemctl enable autostart
我還要指出,您最終/home/pi/bin/app
以 root 身份運行,這可能不是您想要的安全性。除非需要以 root 身分執行它,否則請考慮以其他使用者身分執行您的應用程式。