2010-05-31 02:34:16 +0000 2010-05-31 02:34:16 +0000
31
31

Automatischer Start des VNC-Servers beim Hochfahren

Ich habe den Ubuntu-Desktop auf einem Ubuntu 9.10 VPS-Server installiert und kann mich mit TightVNC mit dem Server verbinden. Allerdings kann der VNC-Server auf diesem VPS nur gestartet werden, indem man sich über SSH anmeldet und den folgenden Befehl eingibt:

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?

Antworten (5)

29
29
29
2010-05-31 02:51:43 +0000

Ich habe diese Anleitung gefunden, indem ich bei 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 USER, GEOMETRY, NAME 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
12
12
12
2012-05-05 21:34:45 +0000

Wenn Sie eine dynamischere Konfiguration und die Möglichkeit der Verbindung für mehrere Benutzer wünschen, gibt es eine bessere Möglichkeit, dies zu tun. Erstellen Sie als root die Datei (und das Verzeichnis, falls es nicht existiert) /etc/sysconfig/vncservers, d. h. führen Sie aus:

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

Fügen Sie nach Bedarf Server für jeden Benutzer hinzu, indem Sie etwas wie das Folgende in die gerade erstellte Datei vncservers.conf einfügen:

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

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

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

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

#!/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 hat, müssen Sie vncserver MINDESTENS EINMAL FÜR JEDEN BENUTZER ausführen, mit dem Sie sich anmelden wollen. Ich habe das in Großbuchstaben geschrieben, denn wenn Sie diesen Schritt auslassen, wird nichts davon funktionieren. Als root könnten Sie also Folgendes tun:

su justin -c vncserver
su bob -c vncserver

Dadurch wird ein .vnc-Verzeichnis im Homeverzeichnis jedes Benutzers mit den entsprechenden Startskripten erstellt.

Zum Schluss machen Sie folgendes:

update-rc.d vncserver defaults 99

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

service vncserver start
1
1
1
2015-06-28 01:18:17 +0000

Ich greife auf das Ubuntu von Freunden zu, denen ich helfe, um etwas zu installieren oder zu konfigurieren oder um ihnen etwas beizubringen.
Da ich den Zugriff aus dem Internet über das Modem benötige, verwende ich vino.
Alle Freigabe- und Sicherheitsoptionen sind beim Zugriff eingeschaltet.
Ich möchte nicht, dass der vino-Server die ganze Zeit aktiv ist: es ist gut, dass er nicht automatisch gestartet wird.
Ich hatte kein System>Remote Desktop Menü.
Ich habe /usr/share/applications/vino-preferences.desktop wie folgt bearbeitet:

# 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 bitte ich meine Freunde, die Remotedesktop-Einstellungen zu starten und das Häkchen bei Freigabe zulassen zu setzen.
Beim Verlassen von Preferences startet vino-server und sie teilen mir die zu verwendende IP-Adresse mit.
Nach Beendigung der Arbeit führen sie die Einstellungen erneut aus und setzen das Häkchen bei Sharing Allow… off.
Beim Verlassen von Preferences wird vino-server gestoppt und würde auch im Zustand Sharing off starten.
Ich finde diese Vorgehensweise sehr bequem und auch die sicherste für den Benutzer.

PS: Entwickler bevorzugen es, ihre Programme lokal (innerhalb einer Benutzersitzung) laufen zu lassen, weil ein Fehler auf diese Weise nicht das globale System beeinflussen kann.

0
0
0
2013-10-26 21:05:15 +0000

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 mich einzuloggen, ohne mich an der Box selbst anzumelden.

Funktionierte gut für die Headless-Ubuntu-Linux-Box

0
0
0
2017-01-06 11:27:48 +0000

Ich schlage vor, Stephen Jennings Lösung auch dann zu verwenden, wenn Sie mehrere vnc’s für verschiedene Benutzer benötigen, indem Sie einfach mehrere vncserver_john, vncserver_bill, … Dateien erstellen. So können Sie sie separat starten/stoppen. Natürlich legt die gute Programmierpraxis nahe, den Code, der allen Benutzern gemeinsam ist, in eine Datei zu packen, und ihn aus allen anderen herauszulösen.

Ich habe die Verantwortung für einen Server “geerbt”, auf dem mehrere Kollegen wissenschaftliche Programmierung und Datenauswertung betreiben, jeder mit einem eigenen vnc. Der Server läuft eigentlich kontinuierlich und stabil über Jahre hinweg, und die Benutzer werden faul, ihre offenen Fenster zu speichern. Allerdings bleiben einzelne vncserver oder X11-Server manchmal hängen, und es ist ein großes Ärgernis, alle Benutzer herunterzufahren, um einen Server wieder zum Laufen zu bringen.