スタンドアロンで実行すると動作しますが、systemdを介して実行すると次のエラーが発生するPythonスクリプト用の新しいサービスが作成されました。
Oct 02 12:17:09 raspberrypi systemd[1]: Started Read pressure And Post to mqtt.
Oct 02 12:17:09 raspberrypi systemd[1]: ReadPressure.service: Main process exited, code=exited, status=203/EXEC
Oct 02 12:17:09 raspberrypi systemd[1]: ReadPressure.service: Unit entered failed state.
Oct 02 12:17:09 raspberrypi systemd[1]: ReadPressure.service: Failed with result 'exit-code'.
Oct 02 12:17:09 raspberrypi systemd[1]: ReadPressure.service: Service hold-off time over, scheduling restart.
Oct 02 12:17:09 raspberrypi systemd[1]: Stopped Read pressure And Post to mqtt.
Oct 02 12:17:09 raspberrypi systemd[1]: ReadPressure.service: Start request repeated too quickly.
Oct 02 12:17:09 raspberrypi systemd[1]: Failed to start Read pressure And Post to mqtt.
Oct 02 12:17:09 raspberrypi systemd[1]: ReadPressure.service: Unit entered failed state.
Oct 02 12:17:09 raspberrypi systemd[1]: ReadPressure.service: Failed with result 'exit-code'.
サービスは「etc/systemd/system/ReadPressure.service」に作成されます。実行権限があります。
サービスは次のとおりです。
[Unit]
Description=ReadPressure
[Service]
ExecStart=/bin/bash -c 'python3 -u /home/pi/ReadPressure/ReadPressure2AndPostToMqtt.py'
WorkingDirectory=/home/pi/ReadPressure/
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
なぜエラーが発生するのかご存知ですか?オペレーティングシステムはラズビアンです。
ありがとう
ベストアンサー1
努力する:
pi@raspberrypi:~ $ systemctl status ReadPressure.service
@Ingoが頼む起動時にThonyからPythonプログラムを起動できません。
エラーメッセージ(コード=終了、ステータス= 203 / EXEC)は、スクリプト自体またはそのインタプリタが実行されていないときによく表示されます。
次の理由が考えられます。
無効なスクリプトパス(例:/home/py/ReadPressure2AndPostToMqtt.py)
スクリプトを実行できません。
Shebangなし(最初の行)
Shebangの無効なパス(例:/bin/python3)
スクリプトの内部ファイルへのアクセス権が不足している可能性があります。
SELinuxはExecStartパラメータの実行を防ぐことができます。 /var/log/audit/audit.logで、次の形式のメッセージを確認
type=AVC msg=audit([...]): avc: denied { execute }
してくださいausearch -ts recent -m avc -i
。WorkingDirectory
パラメータが無効です。