Systemdで早すぎると、アプリケーションは失敗します。どの依存関係が必要ですか?

Systemdで早すぎると、アプリケーションは失敗します。どの依存関係が必要ですか?

RPI 3b+、Debian ストレッチ

systemdでQtアプリケーションを起動したいです。アプリケーションはXを使用し、ディスプレイを開く必要があります。

MIT_MAGIC-COOKIE が無効なため、常に失敗します。しかし、systemdは(失敗した場合)再起動し、正常に動作します。 (「APESディスプレイアプリケーションを起動するのは私のQtアプリケーションです - 私のgrepは「Light Display Manager」と同じ問題を発見しました - 最初は失敗しましたが、再起動後に成功しました)

pi@right-display:~ $cat /var/log/syslog | pi@right-display:~ $cat /var/log/syslog |

11月16日 10:43:26 右ディスプレイ systemd[1]: ストップライトディスプレイマネージャ...

11月16日 10:43:40 右ディスプレイ systemd[1]: APES ディスプレイアプリケーションの起動を開始しました。

11月16日 10:43:40 右ディスプレイ systemd[1]: 照明ディスプレイマネージャを起動します。

11月16日 10:43:41 右モニター x11vnc[653]: 16/11/2023 10:43:41 *** XOpenDisplay が失敗しました。ディスプレイやディスプレイはありません。

11月16日 10:43:41 右ディスプレイ systemd[1]: Light Display Manager を起動します。

11月16日 10:43:42 右側の表示 APES_Display[572]: QStandardPaths: XDG_RUNTIME_DIR が設定されておらず、デフォルトは "/tmp/runtime-pi" です。 11月16日 10:43:44 右表示 APES_Display[572]: Invalid MIT -MAGIC - COOKIE-1 keyqt.qpa.screen: QXcbConnection: ディスプレイに接続できません: 0 Nov 16 10:43:44 右表示 APES_Display[ 572]:Xディスプレイに接続できません。

11月16日 10:43:44 右表示 systemd[1]: Display.service: 基本プロセスが終了しました。コード = 終了、ステータス = 1/FAILURE

11月16日 10:43:44 右ディスプレイ systemd[1]: Display.service: デバイスが障害状態に入りました。

11月16日 10:43:44 右側のディスプレイ systemd[1]: Display.service: "終了コード"のため失敗しました。

Nov 16 10:43:45 右モニター x11vnc[653]: 16/11/2023 10:43:45 *** XOpenDisplay ":0" が成功しました。

11月16日 10:44:02 右表示 systemd[1]: Display.service: サービス遅延時間が切れて再起動される予定です。

Nov 16 10:44:02 右ディスプレイ systemd[1]: APES ディスプレイアプリケーションの起動が停止しました。

Nov 16 10:44:02 右ディスプレイ systemd[1]: APES ディスプレイアプリケーションの起動を開始しました。

11月16日 10:44:02 右側の表示 APES_Display[1307]: QStandardPaths: XDG_RUNTIME_DIR が設定されておらず、デフォルトは「/tmp/runtime-pi」です。

それでは、アプリがディスプレイをオンにする前に実行する必要があるサービスがありますか?または、起動時にのみ必要なように見える「魔法クッキー」を作成する必要があります(サービスを手動で起動すると常に機能します)

それが何であるかをどうやって知ることができますか?

答え1

最善のアプローチは、動作可能と思われるまで数秒待機し、サービスがそのタイマーに依存するようにするシステムタイマーを作成することです。OnBootSec=使用する必要があるタイマーオプション。私たちが見ることができるように、最初の障害はLDMの開始とLDMの開始の間に発生します。

関連情報