Existe uma grande diferença entre reboot e login , e seu sistema trata os dois de forma bem diferente.
-
Os jobs REBOOT são executados pelo usuário raiz (não pelo usuário) e devem estar sem cabeçalho (sem exibição). A melhor maneira de executar tarefas de inicialização no 16.04 e mais recente é criar um service e inclua esse serviço no destino do systemd apropriado durante o processo de inicialização.
-
As tarefas de LOGIN são executadas pelo usuário (não raiz) depois que você digita sua senha. A melhor maneira de fazer trabalhos de login é colocá-los no diretório
~/.config/autostart/
.
Mas você tem um segundo problema. Você parece querer um trabalho em nível de usuário para usar serviços em nível de raiz. Existem muitas maneiras de fazer isso.
-
A maneira mais fácil é simplesmente executar seu script como root manualmente todos os dias. Você já sabe como fazer isso, então vamos ver outras opções.
-
A maneira mais rápida é hackear o arquivo
sudoers
e gerar um conjunto especial de permissões. No entanto, pode não ser feito backup adequadamente com o restante do sistema, o AppArmor pode bloquear algumas ações de qualquer maneira e é difícil solucionar problemas e manter. -
A maneira apropriada é separar suas funções de nível de usuário e nível raiz em dois scripts separados e usar o dbus para iniciar o script de nível raiz e retornar sua saída. Isso é fácil de manter e solucionar problemas, mas requer a maior habilidade e um pouco de aprendizado sobre o dbus.