Ativar o início de um programa manualmente para iniciar automaticamente a inicialização

1

Eu instalei osrm no meu servidor em home/myname/osrm se eu manualmente iniciar o processo de além dir com osrm-routed data/map.osrm funciona bem, mas infelizmente em primeiro plano e após a reinicialização se tiver que iniciá-lo manualmente novamente. Eu tentei instalá-lo como um serviço

[Unit]
Description = starts up the osrm service
After = network.target
[Service]
WorkingDirectory=/home/christian/osrm/
User=christian
ExecStart = /usr/local/bin/osrm-routed   osrm-routed data/map.osrm
[Install]
WantedBy = multi-user.target

Mas quando eu começo o serviço, recebo sempre mensagens de erro como esta

 [/etc/systemd/system/osrmstart.service:7] Executable path specifies a directory, ignoring: /usr/local/bin/osrm-routed/ osrm-routed data/map.osrm
Sep 01 14:03:46 ubuntu systemd[1]: osrmstart.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.

O que estou fazendo de errado? Eu sou muito novo no Ubuntu.

Obrigado por responder à minha pergunta:

quando eu corro:

file /usr/local/bin/osrm-routed

eu recebo o seguinte:

/usr/local/bin/osrm-routed: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=767f57fe712d25f03f1b2d18fd541d0253cd86d4, not stripped

alterei meu osrmstart.service para:

[Unit]
Description = starts up the osrm service
After = network.target
[Service]
Type=simple
WorkingDirectory=/home/christian/osrm/
User=christian
ExecStart = /usr/local/bin/osrm-routed   osrm-routed data/map.osrm
[Install]
WantedBy = multi-user.target

Agora, se eu desabilitar primeiro, ative o osrmstart.service e inicie o serviço com sudo systemctl start osrmstart.service : Não recebo nenhum erro - mas o serviço não está iniciando e não está disponível.

Manualmente posso iniciar o processo quando navego para o meu directório ~ / home / osrm e depois digitando osrm-routed data/map.osrm e Enter isso inicia o processo - o processo é um servidor, esperando no localhost: port5000 por consultas como

http://192.168.1.200:5000/route/v1/driving/11.57787,48.13877;11.52045,48.13969?steps=true&alternatives=true&
geometries=geojson

e retorna o caminho do destino ao destino, mas manualmente o processo está sendo executado em forground.

Preciso que o serviço seja executado em segundo plano, também ao reinicializar o sistema. Talvez seja apenas um erro de tipo - mas eu tentei tantos tipos de tipings. Talvez minha resposta ajude um pouco mais, por me ajudar. Agradecemos antecipadamente.

Christian

    
por ChristianRuegamer 01.09.2017 / 14:51

1 resposta

2

Eu vejo vários problemas aqui:

  1. Erros de sintaxe de código seu código deve ficar assim:

    [Unit]
    Description=starts up the osrm service
    After=network.target
    
    [Service]
    Type=daemon
    WorkingDirectory=/home/christian/osrm/
    User=christian
    ExecStart=/usr/local/bin/osrm-routed data/map.osrm
    
    [Install]
    WantedBy=multi-user.target
    
  2. /usr/local/bin/osrm-routed parece ser um diretório que não é um arquivo executable .

    • Execute file /usr/local/bin/osrm-routed para determinar com certeza, mas acho que você pode saber disso apenas mudando para ele.
  3. Observação: não sabe que tipo de programa você está tentando executar, portanto, Type option pode ser Type=[simple|daemon|oneshot|forking|notify|idle]

Mais informações:

link

link

    
por George Udosen 01.09.2017 / 15:12