Eu tive uma situação semelhante, mas devido a outras restrições irracionais, não pude usar o crontab. Na verdade, eu tinha tela de chamada inittab. (substituiu alguns nomes por informações obscuras):
XXX:5:respawn:/bin/su - useraccount -c "screen -D -m -c /home/xxxxxx/file.screenrc"
Em 'file.screenrc' é onde eu configuro algumas opções:
sessionname obscuresessionname
multiuser on
cd
screen /home/xxxxxxx/programtostart
Dessa forma, ele iniciava na inicialização e, se o programa morresse ou a tela fechasse, ele apareceria novamente. Pode não ter sido considerado convencional, mas tive que trabalhar alguns requisitos de ambiente estranhos. Se precisássemos derrubá-lo, teríamos que comentar essa linha e matar a sessão. Depois, quando estiver pronto para recuperá-lo, remova o comentário e inicie q.