1

起動時にボードで「Qt」アプリを起動したいと考えています。プロセスを開始するためにsystemdを使用しており、グラフィックスのバックエンドはウェイランドです。systemd を使用しているため、アプリを起動するための簡単なサービスを作成しました。PSB。

[Unit] 
Description=Qt App 
After=multi-user.target


[Service] 
Type=simple 
WorkingDirectory=/home/root 
ExecStart=/etc/init.d/qtapp start

[Install] 
WantedBy=multi-user.target

その「/etc/init.d/qtapp」スクリプトは、「プロファイル」を取得し、XDG_* env を設定して Qt アプリを起動するだけです。しかし、この設定では、私のアプリはまったく起動しません。しかし、実行中のプロセスのリストを確認すると、アプリもリストされています。実行中ですが、画面に何も表示されません。

ボードの起動後にアプリを手動で起動すると、問題なく動作します。systemd から起動しない理由がわかりません。

誰もこの問題に直面しましたか? それを機能させるために私が試みることができる提案はありますか?

4

2 に答える 2

0

ここでのデッドロック状況が原因である可能性があります。サービスファイルの [Unit] セクションで指定After=multi-user.targetしました。これにより、multi-user.target が起動した後にサービスが開始されます。同時に、サービスの [Install] セクションで multi-user.target でこれを開始する必要があります。オプションを指定してファイルするWantedBy=multi-user.target

これにより、デッドロック タイプの依存関係が作成されます。これを回避するには、[Install] セクションで別のターゲットを指定してサービスを起動します。または、[Unit] セクションから "After=" オプションを削除するだけです (依存関係が不要な場合)

注: を使用してシステムを再起動する前に、サービス ファイルを有効にしてください。systemctl enable your_service_file.service

于 2015-07-14T05:18:04.557 に答える