Systemd Issue para iniciar o aplicativo

1

Estou usando uma placa Toradex VF50 para o meu aplicativo. Tem um processador ARF Colibri VF-50. Eu tenho portado um Linux BSP sobre isso, e estou usando o systemd para iniciar meu aplicativo Qt. No meu aplicativo Qt, estou analisando alguns arquivos de texto para valores de inicialização padrão.

Quando inicio meu aplicativo usando systemd (multi-user.target), meu aplicativo está falhando porque o aplicativo não consegue ler os valores dos arquivos.

Mas quando eu executo o mesmo aplicativo de um terminal, ele está funcionando sem problemas.

O arquivo de serviço que estou usando para meu aplicativo:

[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 tem o comando:

/bin/sh -c 'source /etc/environment ; /home/root/TestApp -qws'
    
por Rahul G 30.07.2016 / 14:13

1 resposta

0

Quando systemd executa seu script, ele fornecerá apenas um ambiente muito limitado. Em particular, ele não configurará HOME nem USER , nem alterará o diretório para /home/root . Talvez o seu TestApp dependa de um desses. Tente defini-las explicitamente em startup.sh , incluindo cd no diretório correto. Minha versão do systemd apenas define:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
LANG=en_US.UTF-8

e o diretório atual para / . Você também pode fornecer variáveis de ambiente na seção [Service] com, por exemplo:

Environment=HOME=/home/root USER=root

mas observe que as variáveis do shell não são expandidas, portanto você não pode usar isso para definir o caminho, por exemplo, com PATH=/opt/bin:$PATH .

    
por 05.08.2016 / 22:21

Tags