Cómo iniciar el server VNC en la puesta en marcha en Ubuntu 10.04

He estado luchando con esto el time suficiente para formular otra pregunta de secuencia de commands de inicio.

Tengo un script de inicio que es relativamente simple, es decir:

### BEGIN INIT INFO # Provides: startVNC # Requinetworking-Start: $remote_fs $syslog # Requinetworking-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Start VNC server at boot time # Description: Test ### END INIT INFO #!/bin/sh echo "JOB RUN AT $(date)" echo "============================" echo "" /usr/bin/vncserver -geometry 1280x1024 -depth 24 

Obviamente, es solo la última línea lo que es realmente importante. La secuencia de commands es ejecutable, es decir.

 ls -l startVNC 

performances:

 -rwxr-xr-x 1 root root 406 2011-12-07 15:45 startVNC 

Cuando lo ejecuto cuando inicio session en ssh se inicia my_user vncserver y puedo ver la GUI desde mi escritorio. Entonces probé 5 cosas para que funcione en la puesta en marcha:

  1. Copiando mi script en /etc/init.d/ , llamando a update-rc.d -f startVNC defaults (también con 99 después de los defaults por defaults para asegurarme de que todo lo que dependía de vncserver ya se está ejecutando). /etc/rcX.d/ todos los enlaces simbólicos generados que estaban en las carpetas /etc/rcX.d/ . Pero no funcionó en el reinicio o la puesta en marcha
  2. Agregar mi script a /etc/rc.local antes de la exit 0
  3. Agregar a crontab -e como @reboot /home/my_user/scripts/startVNC
  4. Agregar mi script a /etc/init.d/rcS
  5. Agregar mi script al Sistema -> Preferences -> Aplicaciones de inicio en Gnome

pero ninguno de ellos funcionó. ¿Qué más puedo verificar? ¿Hay algún error en mi script? Supongo que el propietario del process debe ser my_user para que funcione, pero no tengo idea de cómo depurarlo.

Cualquier pista apreciada.

Related of "Cómo iniciar el server VNC en la puesta en marcha en Ubuntu 10.04"

Puede usar su [YourUserName] -c /usr/bin/vncserver para ejecutar vncserver como usuario, no como root.

Otro punto: en su secuencia de commands, no hay diferencia entre iniciar y detener el server VNC. Generalmente, un script de inicio usaría diferentes casos para iniciar / detener el service:

 case "$1" in start) # code to start the application ;; stop) # code to stop the application ;; restart) $0 stop $0 start ;; esac 

Aquí hay un ejemplo elaborado de cómo iniciar un server vnc usando un script de inicio.

OK, lo tengo. El problema era:

  1. Ejecutar mi script como root, lo que normalmente sucedería, no funcionará. Es por eso que es necesario usar su [my_user] -c
  2. Uno necesita usar comillas para las opciones, es decir.

    su my_user -c "/ usr / bin / vncserver -geometry 1280×1024 -depth 16"

  3. Yo también agregué . /lib/lsb/init-functions . /lib/lsb/init-functions y exit 0 – no sé si son necesarios, pero seguro que no hacen ningún daño. Acabo de copyrlos del elaborado ejemplo proporcionado por tohuwawohu .

Así que terminé con:

 ### BEGIN INIT INFO # Provides: startVNC # Requinetworking-Start: $remote_fs $syslog # Requinetworking-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Start VNC server at boot time # Description: A sophisticated script to do the job. ### END INIT INFO #!/bin/sh echo "JOB RUN AT $(date)" echo "============================" echo "" . /lib/lsb/init-functions su my_user -c "/usr/bin/vncserver -geometry 1280x1024 -depth 16" exit 0 

Lo cual funciona bien. Por supuesto, usar el guión elaborado citado anteriormente podría ser incluso mejor. Agregué el guión a la puesta en marcha a través de:

 sudo update-rc.d -f startVNC start 99 2 3 4 5 . 

porque no veo ninguna razón para ejecutar nada al apagar (más allá del logging, que no estoy haciendo).

¡También vea el comentario sobre el shebang (la línea que comienza con #!) Fuera de lugar aquí bajo mi pregunta original. Funciona, sin embargo, así que no quería include el código no probado aquí. Deberías cambiarlo probablemente si quisieras usarlo.