Como inicio o servidor VNC na inicialização?


29

Como crio um arquivo de inicialização automática em todo o sistema? Isso seria em um servidor em nuvem executando a versão desktop do Maverick.

Entrei como root e criei um arquivo de inicialização automática, System/Preferences/StartupApplicationsmas ele acabou /root/.config/autostarte não foi executado (tanto quanto eu sei) ao reiniciar. O arquivo de inicialização automática é para invocar um script bash que chama o servidor VNC.

Copiei o arquivo de inicialização automática .desktop de /root/.config/autostartpara /etc/xdg/autostarte reinicializei. Isso não pareceu fazer diferença.

Editar Conforme mencionado em um comentário, o objetivo é executar meu script bash, que inicia o servidor VNC na inicialização; não em um login.


você quer dizer inicialização automática na inicialização ou inicialização automática quando alguém (alguém) faz logon?
fossfreedom

Quero que o servidor VNC seja iniciado automaticamente na inicialização.
H2ONaCl

1
Eu encontrei uma resposta a SU SE superuser.com/questions/147109/... dar-lhe uma tentativa
wisemonkey

O VNC não requer uma exibição para funcionar?
Des

Respostas:


19
  1. Primeiro, instale o servidor TightVNC sudo apt-get install tightvncserver.

  2. Configure o servidor VNC para o usuário no qual você deseja fazer login. Quando você executa o "vncserver" pela primeira vez, ele solicita que você defina uma senha. permite apenas conexões SSH com túnel ou VPN. Para iniciar programas ou uma sessão quando a sessão do VNC for iniciada, modifique ~/.vnc/xstartup. Aqui está um exemplo.

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. Copie o seguinte para /etc/init.d/vncserver. A maneira mais fácil de fazer isso é copiá-lo para a área de transferência, executar sudo -i && cat > /etc/init.d/vncserver && exitem um terminal, colá-lo e digite CTRL-D. Certifique-se de alterar a variável USER para o usuário em que você deseja que o servidor VNC seja executado.

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          vncserver
    # Required-Start:    networking
    # Default-Start:     3 4 5
    # Default-Stop:      0 6
    ### END INIT INFO
    
    PATH="$PATH:/usr/X11R6/bin/"
    
    # The Username:Group that will run VNC
    export USER="mythtv"
    #${RUNAS}
    
    # The display that VNC will use
    DISPLAY="1"
    
    # Color depth (between 8 and 32)
    DEPTH="16"
    
    # The Desktop geometry to use.
    #GEOMETRY="<WIDTH>x<HEIGHT>"
    #GEOMETRY="800x600"
    GEOMETRY="1024x768"
    #GEOMETRY="1280x1024"
    
    # The name that the VNC Desktop will have.
    NAME="my-vnc-server"
    
    OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
    
    . /lib/lsb/init-functions
    
    case "$1" in
    start)
    log_action_begin_msg "Starting vncserver for user '${USER}' on   localhost:${DISPLAY}"
    su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
    ;;
    
    stop)
    log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
    su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
    ;;
    
    restart)
    $0 stop
    $0 start
    ;;
    esac
    
    exit 0
    
  4. Torne o script executável com sudo chmod +x /etc/init.d/vncserver.

  5. Por fim, conecte-se ao seu servidor com um cliente VNC na porta 590X, onde X é o valor de "DISPLAY" no script vncserver. No OS X, eu gosto de usar o Chicken of the VNC. No Windows e Linux, o cliente TightVNC funciona bem.

Fonte


Este superuser.com/questions/147109/… da wisemonkey é a resposta equivalente ao stackexchange. Funciona. Observe que o caminho para o X11 pode precisar de ajustes.
H2ONaCl

TigerVNC instala /etc/init.d/vncserverque começa todos os vncservers configurados no/etc/sysconfig/vncservers
Kashyap

5
Esta foi a partir colado cópia abdevelopment.ca/blog/start-vnc-server-ubuntu-boot , mas deixou de fora o passo mais importantesudo update-rc.d vncserver defaults
Hai Phan

3

Uma possibilidade: /etc/rc.local

O conteúdo diz:

# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits. 
#
# By default this script does nothing

Os bits de execução já estão definidos para 755 no meu sistema. (chmod 755 /etc/rc.local)

Você pode colocar qualquer comando lá, que será executado como root.

Isso é bom para o seu propósito, desde que você não altere os níveis de execução, eu acho. (Se você não souber o que são os níveis de execução, esqueça).


2
Essa sugestão não funcionou para mim.
H212aCl


@ CeesTimmerman, obrigado, mas esses 2 ajustes não funcionaram.
H2ONaCl

2

Se você estiver usando o TigerVNC, ele instala o /etc/init.d/vncserverque inicia todos os servidores vncs configurados em /etc/sysconfig/vncservers Por exemplo, a seguir iniciaria 2 instâncias no visor 1 e 2 na inicialização.

# <display>:<user>
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1920x1080"

VNCSERVERS="2:guest"
VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"

2

este parece ser um post antigo, mas o tópico ainda pode ser interessante para alguns usuários. Para que o vnc inicie na inicialização, você precisará

  1. instale um software de servidor vnc (aqui usaremos x11vnc)
  2. configurar um script de inicialização (usado para iniciar o serviço vnc)

Etapa 1 - instalar o servidor x11vnc

a partir de uma linha de comandos, digite

 sudo apt-get install x11vnc

Para adicionar segurança, você deve definir um pwd

sudo x11vnc -storepasswd

Etapa 2 - Configure seu script de inicialização

  • se a sua versão do ubuntu for inferior a 15.04,

você cria o arquivo de configuração /etc/init.d/x11vnc.confe o preenche com os comandos corretos a serem executados

start on login-session-start  
script  
/usr/bin/x11vnc -xkb -auth
/var/run/lightdm/root/:0
-noxrecord -noxfixes -noxdamage 
-rfbauth /etc/x11vnc.pass 
-forever -bg -rfbport 5900 -o /var/log/x11vnc.log  
end script
  • se a sua versão do ubuntu for 15.04 ou posterior,

esses sistemas estão usando systemd e você precisará criar o arquivo da unidade de serviço /lib/systemd/system/x11vnc.service e preenchê-lo com os comandos corretos a serem executados

[Unit] Description=Start x11vnc at startup. After=multi-user.target

[Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever
-loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -shared

[Install] WantedBy=multi-user.target

Recarregar o serviço

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

Você pode encontrar informações detalhadas na página wiki da Comunidade Ubuntu Ajuda (veja aqui ) ou pode tentar usar esse recibo de uso rápido

Espero que isso seja útil


1

Adicione a linha abaixo ao arquivo crontab. Isso significa que o comando depois que a palavra-chave @rebooté executada durante a reinicialização.

@reboot /usr/bin/vncserver :1

Para abrir o arquivo crontab, use o comando crontab -e


Igual a esta resposta de 6 anos: askubuntu.com/a/124079/158442
muru

0

Você pode fazer o cron iniciar coisas para você no momento da inicialização. Basta usar a string "@reboot" no lugar dos números que você normalmente usa para especificar quando a coisa deve ser executada.

Por exemplo, veja como inicio o Dropbox em uma máquina na qual, de outra forma, não é iniciada automaticamente:

# m h  dom mon dow   command
@reboot         /usr/bin/dropbox start

Esta página diz que só funciona se o sistema realmente reiniciar (sem inicialização a frio).
Cees Timmerman

0

'sudo update-rc.d padrões do vncserver' relatou que estava faltando; "Parada obrigatória:" (mesmo vazia). Então eu adicionei como abaixo. E não há mais aviso.

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          vncserver
    # Required-Start:    networking
    # Required-Stop:     
    # Default-Start:     3 4 5
    # Default-Stop:      0 6
    ### END INIT INFO
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.