A definição dada no man para systemd unit é um pouco confusa: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
Se uma unidade
foo.service
contém uma configuraçãoBefore=bar.service
e ambas as unidades estão sendo iniciadas,bar.service
a inicialização do é atrasada até quefoo.service
seja inicializada. [...]After=
é o inverso deBefore=
, ou seja, enquantoAfter=
garante que a unidade configurada seja iniciada após a inicialização da unidade listada,Before=
garante o contrário, que a unidade configurada seja totalmente iniciada antes da unidade listada ser iniciada.
Digamos que eu tenho a.service
e b.service
. Eu quero a.service
começar completamente antes b.service
porque b.service
depende do a.service
.
Depois de ler a página de manual acima mencionada, não consegui encontrar nenhuma explicação conclusiva sobre se:
- Você só precisa especificar
Before=b.service
noa.service
arquivo da unidade - Você só precisa especificar
After=a.service
nob.service
arquivo da unidade - Você precisa tanto
After=a.service
no arquivo dab.service
unidade quantoBefore=b.service
no arquivo daa.service
unidade
O que eu preciso para declarar dependências para arquivos de unidade systemd? Isso importa?
Você só precisa de um
After=
ouBefore=
em seu par de unidades. Você pode preferir isso na página de manual parasystemctl
:Use esta opção
list-dependencies
para verificar o que você acha que o systemd deveria estar fazendo. Por exemploSe você está convertendo,
upstart
você pode obter algumas dicas aqui , e você pode ler todos os blogs listados aqui sob o título The systemd for Administrators Blog Series .