私のアプリケーションではToradex VF50ボードを使用しています。 VF-50 Colibri ARMプロセッサを搭載しています。私はLinux BSPを移植し、systemdを使用してQtアプリケーションを実行しています。私のQtアプリケーションは、デフォルトの初期化値を取得するためにいくつかのテキストファイルを解析しています。
systemd(multi-user.target)を使用してアプリケーションを起動すると、アプリケーションがファイルから値を読み取れないため、アプリケーションがクラッシュします。
ただし、端末で同じアプリケーションを実行すると、問題なくうまく動作します。
私のアプリケーションで使用するサービスファイル:
[Unit]
Description=Test Application
After=dropbear.service
[Service]
ExecStart=/home/root/startup.sh
#Restart=on-failure
#RestartSec=5
[Install]
WantedBy=multi-user.target
startup.sh
次のコマンドがあります。
/bin/sh -c 'source /etc/environment ; /home/root/TestApp -qws'
答え1
systemd
スクリプトを実行すると、非常に制限された環境のみが提供されます。特に、あなたHOME
のTestAppはこれらのいずれかに依存するかもしれません。正しいディレクトリを含む明示的に設定してください。私のシステムのバージョンが設定されました。USER
/home/root
startup.sh
cd
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
LANG=en_US.UTF-8
このセクションで環境変数を提供する/
こともできます。たとえば、次のようになります。[Service]
Environment=HOME=/home/root USER=root
ただし、シェル変数は拡張されていないため、これを使用してパスを設定することはできませんPATH=/opt/bin:$PATH
。