Esse arquivo systemd Unit funcionou para mim:
[Unit]
Description=Start TigerVNC Server at startup
After=syslog.target network.target
[Service]
Type=forking
User=user
PAMName=login
PIDFile=/home/user/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -depth 24 -geometry 1920x1080 -nolisten tcp -localhost
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Certifique-se de substituir user pelo seu nome de usuário real nas linhas correspondentes a User e PIDFile em [Service] .
- Salvei este arquivo como
[email protected]em/etc/systemd/system/ - Ativado com
systemctl enable [email protected], que cria um arquivo de link simbólico[email protected]em/etc/systemd/system/multi-user.target.wants/apontando para[email protected]in/etc/systemd/system/ - Iniciou o serviço com
systemctl start vncserver@4
Para adaptá-lo às suas necessidades, use seu número de display preferido em vez de 4 (como eu fiz) ao habilitar. Além disso, verifique se você inicializou o vncserver fora desse arquivo de unidade de serviço antes de iniciar o serviço. Isso garantiria a senha e os arquivos necessários ( xstartup , etc.) serão criados. A maneira mais fácil de fazer isso seria executar o comando contra ExecStart under [Service] no arquivo Unit. Para o meu caso, isso se traduz em:
vncserver :4 -depth 24 -geometry 1920x1080 -nolisten tcp -localhost
Fonte: eu adaptei o arquivo de unidade de este guia .