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到[服務]部分。不需要將其置於後台,並且將輸出重定向到檔案在設定檔中無論如何都不起作用。輸出已被捕獲並使用StandardOutput金鑰重定向,預設將其發送到 systemd 日誌。

  2. 另外,僅僅建立文件並不會執行,您還必須啟用它。跑步

    systemctl enable autostart
    

我還要指出,您最終/home/pi/bin/app以 root 身份運行,這可能不是您想要的安全性。除非需要以 root 身分執行它,否則請考慮以其他使用者身分執行您的應用程式。

相關內容