¿Cómo inicio VNC Server en el arranque?


29

¿Cómo creo un archivo de inicio automático de todo el sistema? Esto sería en un servidor en la nube que ejecuta la versión de escritorio de Maverick.

Ingresé como root y creé un archivo de System/Preferences/StartupApplicationsinicio automático usando, pero terminó /root/.config/autostarty no se ejecutó (por lo que puedo decir) al reiniciar. El archivo de inicio automático es invocar un script bash que invoca el servidor VNC.

He copiado el archivo .desktop de inicio automático de /root/.config/autostarta /etc/xdg/autostarty reiniciado. Esto no pareció hacer la diferencia.

Editar Como se menciona en un comentario, el objetivo es ejecutar mi script bash que inicia el servidor VNC al arrancar; no con un inicio de sesión.


¿te refieres al inicio automático en el arranque o al inicio automático cuando alguien (alguien) inicia sesión?
fossfreedom

Quiero que el servidor VNC se inicie automáticamente en el arranque.
H2ONaCl

1
He encontrado una respuesta a SU SE superuser.com/questions/147109/... darle una oportunidad
wisemonkey

¿VNC no requiere una pantalla para ejecutarse?
desgua

Respuestas:


19
  1. Primero, instale el servidor TightVNC sudo apt-get install tightvncserver.

  2. Configure el servidor VNC para el usuario con el que desea iniciar sesión. Cuando ejecute "vncserver" por primera vez, le pedirá que establezca una contraseña. solo permite conexiones SSH tunelizadas o VPN. Para iniciar programas o una sesión cuando comience su sesión de VNC, modifique ~/.vnc/xstartup. Aquí hay un ejemplo.

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. Copie lo siguiente en /etc/init.d/vncserver. La forma más fácil de hacerlo es copiarlo en el portapapeles, ejecutarlo sudo -i && cat > /etc/init.d/vncserver && exiten una terminal, pegarlo y escribir CTRL-D. Asegúrese de cambiar la variable USUARIO a cualquier usuario con el que desee que se ejecute el servidor VNC.

    #!/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. Haga que el script sea ejecutable con sudo chmod +x /etc/init.d/vncserver.

  5. Finalmente, conéctese a su servidor con un cliente VNC en el puerto 590X, donde X es el valor de "DISPLAY" en el script vncserver. En OS X, me gusta usar Chicken of the VNC. En Windows y Linux, el cliente TightVNC funciona bien.

Fuente


Este superuser.com/questions/147109/... de wisemonkey es la respuesta equivalente StackExchange. Funciona. Tenga en cuenta que la ruta a X11 podría necesitar un ajuste.
H2ONaCl

Se instala TigerVNC /etc/init.d/vncserverque inicia todos los servidores vncs configurados en/etc/sysconfig/vncservers
Kashyap

55
Esto fue copiado de abdevelopment.ca/blog/start-vnc-server-ubuntu-boot , pero DEJÓ EL PASO MÁS IMPORTANTEsudo update-rc.d vncserver defaults
Hai Phan,

3

Una posibilidad: /etc/rc.local

El contenido lo dice:

# 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

Los bits de ejecución ya están establecidos en 755 en mi sistema. (chmod 755 /etc/rc.local)

Puede poner cualquier comando allí, que se ejecutará como root.

Supongo que esto está bien para su propósito, siempre y cuando no cambie los niveles de ejecución. (Si no sabe qué son los niveles de ejecución, no importa).


2
Esta sugerencia no me funcionó.
H2ONaCl


@ CeeTimmerman, gracias, pero esos 2 ajustes no funcionaron.
H2ONaCl

2

Si está utilizando TigerVNC, entonces se instala, lo /etc/init.d/vncserverque inicia todos los servidores vncs configurados en, por /etc/sysconfig/vncservers ejemplo, a continuación, se iniciarían 2 instancias en la pantalla 1 y 2 al inicio.

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

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

2

Esta parece ser una publicación antigua, pero el tema puede seguir siendo interesante para algunos usuarios. Para que vnc comience en el arranque, necesitará

  1. instale un software de servidor vnc (aquí usaremos x11vnc)
  2. configurar un script de inicio (usado para iniciar el servicio vnc)

Paso 1 - instala el servidor x11vnc

desde una línea de comando, escriba

 sudo apt-get install x11vnc

Para agregar seguridad, debe establecer un pwd

sudo x11vnc -storepasswd

Paso 2 - Configura tu script de inicio

  • si su versión de ubuntu es inferior a 15.04,

crea el archivo de configuración debajo /etc/init.d/x11vnc.confy lo llena con los comandos correctos para ejecutar

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
  • si su versión de ubuntu es 15.04 o posterior,

estos sistemas están usando systemd y necesitará crear su archivo de unidad de servicio debajo /lib/systemd/system/x11vnc.service y llenarlo con los comandos correctos para ejecutar

[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

Recargar el servicio

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

Puede encontrar información detallada en la página wiki de la Comunidad de Ubuntu de Ayuda (ver aquí ) o puede intentar usar este rápido de usar

Espero que esto sea útil


1

Agregue la siguiente línea al archivo crontab. Esto significa el comando después de que la palabra clave @rebootse ejecuta durante el reinicio.

@reboot /usr/bin/vncserver :1

Para abrir el archivo crontab, necesita usar el comando crontab -e


Igual que esta respuesta de 6 años: askubuntu.com/a/124079/158442
muru

0

Puede tener cosas de inicio cron para usted en el momento del arranque. Simplemente use la cadena "@reboot" en lugar de los números que normalmente usa para especificar cuándo debe ejecutarse la cosa.

Por ejemplo, así es como inicio Dropbox en una máquina en la que no se inicia automáticamente:

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

Esta página dice que solo funciona si el sistema se reinicia realmente (sin arranque en frío).
Cees Timmerman

0

'sudo update-rc.d vncserver defaults' informó que faltaba; "Parada obligatoria:" (incluso vacía). Entonces lo agregué como a continuación. Y no más advertencias.

    #!/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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.