Você tem opções para o comando principal ExecStart
. Eu não sei, mas suspeito que os -Post
e -Pre
não os usam.
Aceitando 10 e 11 como válidos: SuccessExitStatus =
Visualizando 111 como um separador total de ofertas: RestartPreventExitStatus =
Caso contrário, você sempre pode escrever um script shell rápido para empacotar a falta de suporte no systemd.
Eu faria algo assim:
#!/bin/sh
if [ -f /run/my-script-is-dead ]
then
# to avoid very fast loop, sleep for a bit
sleep 10
exit 1
fi
# Run the script itself
/path/and/usual-command
# check result
RESULT=$?
if [ $RESULT -eq 10 ] || [ RESULT -eq 11 ]
then
exit 0
fi
if [ $RESULT -eq 111 ]
then
touch /run/my-script-is-dead
exit 1
fi
exit $RESULT
Mas, colocando um arquivo em /run
, ele irá automaticamente desaparecer em cada reinicialização. Se você quer algo mais permanente, então você terá que criar um arquivo em outro lugar (por exemplo, /var/cache/...
)