Adicione a seguinte linha ao final do seu script upstart:
respawn
Isso é exatamente para o caso que você descreveu: Upstart então assiste e inicia assim que ele está "saindo" - com apenas uma exceção: Se ele for intencionalmente interrompido por service xyz stop
, ele será parado e não reaparecerá até é intencionalmente iniciado novamente.