내 응용 프로그램에서 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
: .