ボリュームポテンショメータを継続的に監視し、subprocess.check_output()を使用してpactlコマンドを実行してオーディオボリュームを調整するPythonスクリプトがあります。
コマンドラインから実行すると、これはすべてうまくいきます。
起動時にバックグラウンドでスクリプトを実行したいので、systemdサービスを作成することにしました。
私のサービスファイルは次のとおりです。
[Unit]
Description=Knob monitor
After=multi-user.target
[Service]
User=dave
Type=simple
ExecStart=/usr/bin/python /home/dave/dev/serial/knob_monitor.py
Restart=always
[Install]
WantedBy=multi-user.target
スクリプトは正常に実行されますが、pactl コマンドは実行されません。
サービスファイルを/usr/lib/systemd/userフォルダに移動し、ユーザー参照を削除すると役に立つ可能性があることがわかりました。
私はこれを行い、次のコマンドを使用しました。
systemctl --user daemon reload
systemctl --user enable knob_monitor.service
systemctl --user start knob_monitor.service
これは動作し、pactlは期待通りに実行されます!起動時に実行されていないようですが:(ステータスを確認すると、次のエラーが発生します。
systemctl --user status knob_monitor.service
knob_monitor.service - Knob monitor
Loaded: loaded (/usr/lib/systemd/user/knob_monitor.service; enabled; vendor preset: enabled)
Active: inactive (dead)
この機能を実装するのに役立つ変更を提案できる人はいますか?