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. [Service] セクションに追加しますType=oneshot。バックグラウンドで実行する必要はありません。また、出力をファイルにリダイレクトしても、設定ファイルでは何も機能しません。出力はすでにキャプチャされ、キーを使用してリダイレクトされています。StandardOutputデフォルトでは、出力は systemd ジャーナルに送信されます。

  2. また、ファイルを作成しただけでは実行されません。有効にする必要があります。

    systemctl enable autostart
    

また、最終的には/home/pi/bin/approot として実行されることになりますが、これはセキュリティ上望ましくない可能性があります。root として実行する必要がない限り、別のユーザーとしてアプリを実行することを検討してください。

関連情報