Força um serviço a iniciar antes de networking.service

2

Gostaria de iniciar meu serviço samplerbox.service

[Unit]
Description=Starts SamplerBox

[Service]
Type=simple
ExecStart=/root/SamplerBox/samplerbox.sh          # this script does: python /root/SamplerBox/samplerbox.py
WorkingDirectory=/root/SamplerBox/

[Install]
WantedBy=multi-user.target

antes de networking.service (coisa DHCP, atribuição de IP, etc.) terminar.

Observação: meu programa não usa rede de modo algum.

Aqui está o enredo ( tamanho maior aqui ):

link

Como você pode ver, samplerbox.service espera exatamente que networking.service seja concluído. (Eu fiz vários testes, e é o mesmo).

Eu tentei: substituir WantedBy=multi-user.target por outra coisa como WantedBy=sound.target e, em seguida, systemctl disable samplerbox.service e reativá-lo ... Mas isso não teve sucesso!

Como forçar um serviço a começar antes de networking.service ?

    
por Basj 30.05.2015 / 02:34

1 resposta

5

samplerbox.service is started after networking has finished.

Verdade, mas apenas incidental e não o que realmente está acontecendo. Se você olhar cuidadosamente no gráfico, verá que samplerbox.service está sendo iniciado após basic.target . Isso é normal e por design no systemd. A maioria dos serviços (não do sistema) tem um conjunto de "dependências padrão", que são dependências implícitas e ordenações que não são gravadas na unidade de serviço. Uma dependência de basic.target e uma ordem posterior a ela é um desses padrões aplicados pelo systemd, a menos que os padrões sejam explicitamente desabilitados na unidade de serviço.

Você também está combinando pedidos e dependência. As várias diretivas "want", como WantedBy com as quais você está jogando e seu reverso Wants , especificam dependências. Eles fazem o systemd enfileirar um trabalho para também iniciar o serviço B se uma solicitação for feita para iniciar o serviço A. Eles não especificam os pedidos desses trabalhos. Os pedidos são controlados por outras configurações, a saber, o bastante obviamente nomeado Before e After .

As dependências especificam qual conjunto geral de tarefas de início e de parada é construído a partir de um comando simples, como systemctl start graphical.target . As encomendas especificam quando e em que ordem essas tarefas são executadas.

Leitura adicional

  • Lennart Poettering (2013-10-07). systemd.unit . páginas de manual do systemd. freedesktop.org.
  • Lennart Poettering (2013-10-07). systemd.service . páginas de manual do systemd. freedesktop.org.
por 30.05.2015 / 12:08