Eu tentei usar supervisionar daemontools com um crontab:
Primeiro, começo com
supervise /fullpath
e eu uso este crontab:
0 23 * * * svc -d /fullpath
2 23 * * * svc -k /fullpath
5 23 * * * svc -u /fullpath
Onde fullpath é o diretório que contém o arquivo chamado run que inicia meu processo. A parte complicada é que o arquivo chamado deve terminar com:
exec java ...
Normalmente, inicio o aplicativo com um script, mas se eu colocar esse script no arquivo chamado run, quando o svc for executado, ele enviará o sinal para o script e o processo java continuará a ser executado. Eu criei uma cópia do script e modifiquei para fazer com que ela emitisse a chamada para java com todos os parâmetros e copiei isso no arquivo chamado run.