Como faço para iniciar o servidor VNC na inicialização?

21

Como faço para criar um arquivo de início automático em todo o sistema? Isso seria em um servidor de nuvem executando a versão desktop do Maverick.

Eu efetuei login como root e criei um arquivo de início automático usando System/Preferences/StartupApplications , mas ele acabou em /root/.config/autostart e não foi executado (até onde eu sei) na reinicialização. O arquivo de autoinicialização deve invocar um script bash que invoca o servidor VNC.

Copiei o arquivo de início automático do .desktop de /root/.config/autostart para /etc/xdg/autostart e reiniciei. Isso não parece fazer diferença.

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

    
por H2ONaCl 11.04.2012 / 11:56

7 respostas

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

  2. Configure o servidor VNC para o usuário que você deseja efetuar login. Quando você executar o "vncserver" pela primeira vez, ele pedirá que você defina uma senha. Permitir apenas SSH tunnelled ou conexões VPN. Para iniciar programas ou uma sessão quando sua sessão 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 em /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 && exit em um terminal, colá-lo e digitar CTRL-D. Certifique-se de alterar a variável USER para qualquer usuário 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, em que X é o valor de "DISPLAY" no script vncserver. No OS X, eu gosto de usar o Chicken do VNC. No Windows e no Linux, o cliente TightVNC funciona bem.

Fonte

    
por maniat1k 17.04.2012 / 17:04
3

Uma possibilidade: /etc/rc.local

O conteúdo diz isso:

# 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 configurados no 755 no meu sistema. (chmod 755 /etc/rc.local)

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

Isso é ok para o seu propósito, desde que você não mude os runlevels, eu acho. (Se você não sabe o que são runlevels, deixa pra lá).

    
por Tobias 11.04.2012 / 12:21
2

Se você estiver usando o TigerVNC, ele instala /etc/init.d/vncserver , o que inicia todos os vncservers configurados em /etc/sysconfig/vncservers Por exemplo. seguinte iria iniciar 2 instâncias na exibição 1 & 2 na inicialização.

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

VNCSERVERS="2:guest"
VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"
    
por Kashyap 28.07.2014 / 17:11
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 estaremos usando x11vnc)
  2. configure um script de inicialização (usado para iniciar o serviço vnc)

Passo 1 - instalar o servidor x11vnc

em uma linha de comando, digite

 sudo apt-get install x11vnc

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

sudo x11vnc -storepasswd

Passo 2 - Configure seu script de inicialização

  • se sua versão do Ubuntu for menor que 15,04,

você cria o arquivo de configuração em /etc/init.d/x11vnc.conf e 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 sua versão do ubuntu for 15.04 ou posterior,

esses sistemas estão usando systemd e você precisará criar seu arquivo de unidade de serviço em /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

Recarregue o serviço

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

Você pode encontrar informações detalhadas na página wiki Help Ubuntu Community (veja aqui ) ou você pode tentar usar isso rápido para usar recipice

  • Para a versão do Ubuntu menor que 15,04 , verifique este post
  • Para a versão do Ubuntu 15.04 ou posterior , verifique este post

Espero que isso seja útil

    
por Griffon 13.04.2016 / 22:30
1

Adicione a linha abaixo ao arquivo crontab. Isso significa que o comando após a palavra-chave @reboot é executado durante a reinicialização.

@reboot /usr/bin/vncserver :1

Para abrir o arquivo crontab, é necessário usar o comando crontab -e

    
por rashok 23.04.2018 / 07:14
0

Você pode ter o cron start 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, aqui está como eu inicio o Dropbox em uma máquina na qual ele não inicia automaticamente:

# m h  dom mon dow   command
@reboot         /usr/bin/dropbox start
    
por offby1 22.04.2012 / 01:12
0

'sudo update-rc.d padrões do vncserver' informou que estava faltando; "Necessário-Pare:" (mesmo vazio). Então eu adicionei como abaixo. E não 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
    
por Paulsk 05.08.2017 / 02:09

Tags