Sua pergunta contém dois problemas separados: (a) como traduzir a dependência de serviços para a sintaxe dos arquivos da unidade systemd e (b) como alterar as definições das unidades sem alterar os arquivos da unidade fornecidos pelo fornecedor do software.
Quanto a (a), você observa corretamente que deseja After=
keyword. O arquivo de unidade do JBoss deve conter ambos After=<WebSphereMQ unit name>
e Wants=<WebSphereMQ unit name>
. O motivo para isso é: dependências funcionais entre unidades e ordem de início de unidades são variáveis / dimensões separadas. Às vezes, você deseja que o serviço A seja iniciado toda vez que o serviço B for iniciado, e é para isso que Wants=
e Requires=
servem. Às vezes, você deseja que o serviço A seja iniciado após o serviço B, se o serviço B já estiver na fila; é para isso que After=
e Before=
são. Normalmente você quer os dois.
Quanto a (b), você precisa usar o recurso chamado "drop-ins". Eles estão disponíveis no systemd desde o início, mas a documentação estava espalhada em muitas páginas do manual e difíceis de encontrar. Isso mudou em uma das versões mais recentes (219, creio eu), quando a descrição detalhada foi adicionada perto do final de man systemd.unit .
Drop-ins são pequenos bits de configuração que substituem partes da definição de unidade existente. Seu objetivo é permitir que o administrador do sistema faça alterações locais sem precisar substituir o arquivo de unidade fornecido pelo fornecedor do software (portanto, as atualizações de software são um pouco mais fáceis, pois você não precisa se preocupar com o gerenciador de pacotes que sobrescreve suas alterações).
Os drop-ins são arquivos de texto com nomes que terminam com .conf
e são colocados no diretório <unit name>.d
.
No seu caso, você quer criar o diretório /etc/systemd/system/jboss.service.d/
(assumindo que o JBoss vem com jboss.service
unit file) e então criar o arquivo webspheremq.conf
com o seguinte conteúdo:
[Unit]
Wants=WebSphereMQ
After=WebSphereMQ
Depois de recarregar a configuração do systemd ( systemctl daemon-reload
), você deverá ver as alterações em systemctl show jboss.service
e systemctl status jboss.service
. Aqui está o que você pode esperar do segundo comando (observe a linha "Drop-In"):
● [email protected] - rsnapshot monthly backup
Loaded: loaded (/etc/systemd/system/[email protected]; static)
Drop-In: /etc/systemd/system/[email protected]
└─after.conf
Active: inactive (dead)