Acho que parte do problema é que existem / algumas maneiras de executar um aplicativo na inicialização.
Um daemon é algo como os antigos TSRs do DOS - é um aplicativo que é iniciado e executado em segundo plano.
As maneiras "clássicas" de fazer isso com um script init (que tendem a ser um pouco complicadas de escrever) - mas estas foram um pouco obsoletas, ou crontab - que literalmente apenas uma coisa projetada para executar tarefas específicas de cada vez .
O comando service refere-se ao upstart, que lida com o que os scripts init fizeram, mas com o 16.04, é substituído pelo systemd. É usado para systemd para pessoas em transição de upstart mas vale a pena substituir "service" com "systemctl" - que faz a mesma coisa e muito mais.
Escreva seu script para o systemd.
Por quê? É suportado e será para o longo prazo. Tem uma sintaxe bastante sensata. A documentação também é bastante decente.
Also there are environment variables that must be declared and are set in ~/.profile (I guess they could go anywhere) and I'm not sure that crontab "reads" those environment variables, atleast that's what I've read.
De acordo com os documentos do systemd (e para ler mais - esta questão AU , e o Ubuntu documentação )
Você pode adicionar uma linha com as variáveis ambientais com uma linha como
Ambiente="ONE = um" 'DOIS = dois dois'
Você também pode iniciá-lo como um usuário específico ou em um horário específico. Você pode até mesmo trivialmente reiniciá-lo automaticamente