VNC-Server beim Start automatisch starten

Ich habe den Ubuntu-Desktop auf einem Ubuntu 9.10 VPS-Server installiert und kann mit TightVNC eine Verbindung zum Server herstellen. Der VNC-Server auf diesem VPS kann jedoch nur gestartet werden, indem Sie sich über SSH anmelden und den folgenden Befehl eingeben:

vncserver :1 -geometry 800x600 -depth 16 -pixelformat rgb565

Wenn ich diesen Befehl beim Start oder als Zeitplanaufgabe ausführe, wird er nicht gestartet. Was sind meine Optionen?

Author: slhck, 2010-05-31

5 answers

Ich habe diese Anweisungen gefunden, indem ich Google nach "ubuntu launch vnc server on startup " gesucht habe.

  1. Installieren Sie den VNC-server.
  2. Starten Sie vncserver zum ersten Mal, um ein Passwort einzurichten.
  3. Fügen Sie die folgende Datei als /etc/init.d/vncserver hinzu (ändern Sie unbedingt den BENUTZER, die GEOMETRIE,den NAMEN usw. nach Ihren wünschen).
  4. sudo chmod +x /etc/init.d/vncserver
  5. sudo update-rc.d vncserver defaults

/etc/init.d/vncserver

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    networking
# Default-Start:     S
# 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
 32
Author: Stephen Jennings,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-05-31 02:51:43

Wenn Sie eine dynamischere Konfiguration und die Möglichkeit zur Verbindung für mehrere Benutzer wünschen, gibt es einen besseren Weg, dies zu tun. Als root erstellen Sie die Datei (und das Verzeichnis, falls nicht vorhanden) /etc/sysconfig / vncservers dh tun:

mkdir -p /etc/vncserver
touch /etc/vncserver/vncservers.conf

Fügen Sie Server nach Bedarf für jeden Benutzer hinzu, indem Sie den vncservers Folgendes hinzufügen.conf-Datei, die Sie gerade erstellt haben:

VNCSERVERS="1:justin 2:bob"
VNCSERVERARGS[1]="-geometry 1920x1080 -depth 24"
VNCSERVERARGS[2]="-geometry 800x600 -depth 8"

Erstellen Sie als nächstes ein leeres Init-Skript und machen Sie es ausführbar:

touch /etc/init.d/vncserver
chmod +x /etc/init.d/vncserver

Fügen Sie Folgendes hinzu /etc/init.d/vncserver:

#!/bin/bash

unset VNCSERVERARGS
VNCSERVERS=""
[ -f /etc/vncserver/vncservers.conf ] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"

start() {
        . /lib/lsb/init-functions
        REQ_USER=$2
        echo -n $"Starting $prog: "
        ulimit -S -c 0 >/dev/null 2>&1
        RETVAL=0
        for display in ${VNCSERVERS}
        do
                export USER="${display##*:}"
                if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
                        echo -n "${display} "
                        unset BASH_ENV ENV
                        DISP="${display%%:*}"
                        export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
                        su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
                fi
        done
}

stop() {
        . /lib/lsb/init-functions
        REQ_USER=$2
        echo -n $"Shutting down VNCServer: "
        for display in ${VNCSERVERS}
        do
                export USER="${display##*:}"
                if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
                        echo -n "${display} "
                        unset BASH_ENV ENV
                        export USER="${display##*:}"
                        su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
                fi
        done
        echo -e "\n"
        echo "VNCServer Stopped"
}

case "$1" in
start)
start $@
;;
stop)
stop $@
;;
restart|reload)
stop $@
sleep 3
start $@
;;
condrestart)
if [ -f /var/lock/subsys/vncserver ]; then
stop $@
sleep 3
start $@
fi
;;
status)
status Xvnc
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac

Wie Stephen in seiner Antwort erwähnt, müssen Sie vncserver MINDESTENS EINMAL ALS JEDEN BENUTZER ausführen, als den Sie sich anmelden möchten. Ich habe das in Kappen gesetzt, denn wenn Sie diesen Schritt überspringen, funktioniert nichts davon. So wie root könnten Sie tun:

su justin -c vncserver
su bob -c vncserver

Dies wird ein erstellen .vnc-Verzeichnis in jedem Benutzer home dir mit den entsprechenden Startskripten.

Schließlich tun Sie Folgendes:

update-rc.d vncserver defaults 99

Jetzt können Sie den Dienst entweder neu starten oder manuell starten, indem Sie Folgendes eingeben:

service vncserver start
 12
Author: Justin Buser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-05-05 21:34:45

In Ubuntu 12.1 konnte ich in Systemeinstellungen->Benutzer gehen und einen Benutzer auswählen und "Automatische Anmeldung->EIN"

Dann konnte ich TightVNC verwenden, um einzusteigen, ohne mich bei der Box selbst anzumelden.

Funktionierte gut für headless ubuntu linux box

 1
Author: Jim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-10-26 21:05:15

Ich greife auf das Ubuntu von Freunden zu, denen ich helfe, um sie zu installieren oder zu konfigurieren oder ihnen etwas beizubringen.
Da ich Zugang vom Internet über das Modem benötige, benutze ich vino.
Alle Freigabeoptionen und Sicherheitsoptionen sind während des Zugriffs aktiviert.
Ich möchte nicht, dass der Vino-Server ständig aktiv ist: Es ist in Ordnung, dass er nicht automatisch startet.
Ich hatte kein System>Remote Desktop-Menü.
Ich bearbeitet /usr/share/applications/vino-preferences.desktop wie folgt:

# OnlyShowIn=Unity;
Exec=bash -c 'vino-preferences;/usr/lib/vino/vino-server&zenity --info --text="Accès par Internet: `curl http://ipecho.net/plain`:5900"'

Vor der Arbeit frage ich meine freunde Remote-Desktop-Einstellungen ausführen und zu aktivieren Freigabe erlauben... auf.
Beim Beenden der Einstellungen startet vino-Server und sie sagen mir die zu verwendende IP-Adresse.
Wenn die Arbeit beendet ist, führen sie die Präferenz erneut aus, um die Freigabe zuzulassen... off.
Beim Beenden der Einstellungen stoppt der vino-Server und stoppt auch dann, wenn er im Status Freigabe aus gestartet wird.
Ich finde dieses Verfahren sowohl sehr praktisch als auch für den Benutzer am sichersten.

PS: Entwickler bevorzugen es, ihre Programme lokal auszuführen (innerhalb einer Benutzersitzung), da ein Fehler das globale System auf diese Weise nicht beeinflussen kann.

 1
Author: Papou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-06-28 01:27:48

Ich schlage vor, Stephen Jennings-Lösung auch zu verwenden, wenn Sie mehrere vncs für verschiedene Benutzer benötigen, indem Sie einfach mehrere vncserver_john, vncserver_bill,... Datei. Auf diese Weise können Sie sie separat starten/stoppen. Sicherlich schlägt eine gute Programmierpraxis vor, den allen Benutzern gemeinsamen Code in eine Datei zu schreiben und von allen anderen zu beziehen.

Ich habe die Verantwortung für einen Server" geerbt", auf dem mehrere Kollegen wissenschaftliche Programmierung und Datenauswertung durchführen, jeder mit einem separate vnc. Der Server läuft tatsächlich kontinuierlich und stabil über Jahre, und Benutzer werden faul, ihre offenen Fenster zu speichern. Einzelne vncserver oder X11-Server bleiben jedoch manchmal hängen, und es ist ein großes Ärgernis, alle Benutzer herunterzufahren, um einen Server wieder zum Laufen zu bringen.

 0
Author: Peter Steier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-01-06 11:27:48