Você não especificou nenhuma restrição de ordenação entre os dois serviços. Portanto, o que está acontecendo é que B.service
está iniciando (e executando o mkdir
) antes que A.service
termine (e execute o rm
).
A seção relevante dos documentos da systemd.unit :
Conflicts=
Note that this setting is independent of and orthogonal to the After= and Before= ordering dependencies.
A solução é adicionar o outro serviço à lista After=
de cada um (adicione A.service
a B.service
' After=
e vice-versa).
Veja também esta seção relevante de os documentos :
Before=, After=
Given two units with any ordering dependency between them, if one unit is shut down and the other is started up, the shutdown is ordered before the start-up. It doesn't matter if the ordering dependency is After= or Before=, in this case. It also doesn't matter which of the two is shut down, as long as one is shut down and the other is started up. The shutdown is ordered before the start-up in all cases.
^ significa que realmente não importa se você usa After=
ou Before=
. Ambos vão realizar a mesma coisa.