Não me lembro de ver um modelo para isso. É um pouco irônico, no entanto, que tecnicamente, seu upstart que está iniciando seu script init.d em primeiro lugar graças ao trabalho de compatibilidade retroativa rc e rcS.
Eu consideraria reescrever o que você tem como um trabalho inicial, no entanto, eu sei que alguns scripts são difíceis de converter, então aqui está o que eu fiz por um tempo em alguns dos meus scripts:
description "xyz"
author "xyz"
start on runlevel 5
stop on runlevel [!5]
pre-start script
# do my work here to start the service
end script
post-stop script
# do work here to stop the service
end script
Agora, dependendo da natureza do serviço, se ele persiste ou se bifurca, talvez seja necessário adicionar expect fork
ou task
ao arquivo de trabalho.
Só para completar o pensamento, geralmente, isso é tudo para um arquivo completo de trabalho inicial. Todo o trabalho de pré-inicialização é feito, toda a limpeza é feita, a única coisa que resta é o próprio serviço, que geralmente é adicionado com:
exec service_cmd