Iniciando um programa na inicialização com systemd no Ubuntu

Iniciando um programa na inicialização com systemd no Ubuntu

Eu gostaria de executar um programa de back-end Java na inicialização (na verdade, pode ser no login do usuário) com o systemd, que usaria o servidor X para criar uma janela de renderização na memória. A janela de renderização é criada pelo VTK para renderizar volume com uma GPU, e obterei capturas de tela dela.

a seguir está meu arquivo de serviço que coloquei no /etc/systemd/systemdiretório.

[Unit]
Description= myservice
After=mysql.service

[Service]
User=root
Environment=DISPLAY=:0
Restart=always
Type=forking
ExecStart=/root/myservice/startup.sh
ExecStop=/root/myservice/shutdown.sh

[Install]
WantedBy=multi-user.target

depois de fazer login pela GUI, o serviço não é iniciado. então executo o comando xhost +para permitir que todo o acesso do usuário seja exibido e executado systemctl start myservicepara iniciar o serviço manualmente. Então eu consigo o que quero.

Gostaria de saber se existe alguma maneira de permitir que myservice seja executado automaticamente no login. E outra pergunta, posso definir o ambiente para um número DISPLAY fixo para todos os computadores?

Estou usando o Ubuntu 16.04/18.04.

informação relacionada