Depois de passar dois dias com ele, acabou o problema com Type=forking
. Aparentemente, todos os meus serviços são garfos de algum processo pai comum e quando eu reiniciei um deles, eu estava realmente reiniciando o processo pai, que por sua vez reiniciava os outros.
Se alguém me der uma explicação completa para isso, vou marcá-lo como a resposta correta.
Acho que a chave são os scripts .sh
que acionaram os programas java, todos eles como:
#! /bin/sh
java -jar /path_to_java_program/java_program.jar&
Agora, como meus programas java têm um script de início incorporado, estou apenas fazendo algo como (em todos eles):
[Unit]
Description=Starts java_program
After=network.target and other dependencies
[Service]
Type=simple
User=root
ExecStart=/path_to_the_java_program/java_program.jar
ExecStop=/usr/bin/services/serv1stop.sh
Restart=always
[Install]
WantedBy=multi-user.target