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

VNC server automatisch starten bij opstarten

Ik heb de Ubuntu-desktop geïnstalleerd op een Ubuntu 9.10 VPS-server en ik kan verbinding maken met de server met behulp van TightVNC. Echter, de VNC server op deze VPS kan alleen worden gestart door in te loggen via SSH en het volgende commando te typen:

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

Als ik dit commando bij het opstarten of als een geplande taak uitvoer, start hij niet. Wat zijn mijn opties?

Antwoorden (5)

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

Ik vond deze instructies door Google te doorzoeken op ubuntu launch vnc server on startup “.

  1. Installeer de VNC-server.
  2. Start vncserver voor de eerste keer om een wachtwoord in te stellen.
  3. Voeg het volgende bestand toe als /etc/init.d/vncserver (zorg ervoor dat je de USER, GEOMETRY, NAME, enz. naar wens aanpast).
  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

Als je een meer dynamische configuratie wil en de mogelijkheid om verbinding te maken voor meerdere gebruikers dan is er een betere manier om dit te doen. Maak als root het bestand (en de map als die nog niet bestaat) /etc/sysconfig/vncservers aan, doe bijvoorbeeld

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

Voeg servers toe naar behoefte voor iedere gebruiker door iets als het volgende toe te voegen aan het vncservers.conf bestand dat je zojuist hebt aangemaakt:

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

Maak vervolgens een leeg init-script en maak het uitvoerbaar:

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

voeg het volgende toe aan /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

Zoals Stephen in zijn antwoord zei, moet je vncserver TEN MINSTE EEN KEER laten draaien ALS ELKE GEBRUIKER waarmee je wilt inloggen. Ik zet dat in hoofdletters omdat als je die stap overslaat niets van dit alles zal werken. Dus als root zou je kunnen doen:

su justin -c vncserver
su bob -c vncserver

Dit maakt een .vnc directory aan in de home dir van iedere gebruiker met de juiste startup scripts.

Doe tenslotte het volgende:

update-rc.d vncserver defaults 99

nu kun je ofwel opnieuw opstarten of de service handmatig starten door te typen:

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

Ik krijg toegang tot de Ubuntu van vrienden die ik help, om te installeren of te configureren of om ze iets te leren.
Omdat ik toegang nodig heb vanaf het Internet via de modem, gebruik ik vino.
Alle opties voor delen en beveiligen staan aan tijdens de toegang.
Ik wil niet dat de vino-server de hele tijd actief is: het is prima dat hij niet autostart.
Ik had geen Systeem>Memote Desktop menu.
Ik heb /usr/share/applications/vino-preferences.desktop als volgt bewerkt:

# 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"'

Voor het werk vraag ik mijn vrienden om Voorkeuren voor Remote Desktop te starten en om Delen toestaan… aan te vinken.
Bij het verlaten van Voorkeuren, start vino-server en zij vertellen mij het te gebruiken IP adres.
Als het werk klaar is, starten ze Preferences opnieuw en zetten Sharing Allow… uit.
Bij het verlaten van Voorkeuren, stopt de vino-server en zou zelfs stoppen als hij gestart was in de Sharing off status.
Ik vind deze procedure erg handig en ook het veiligst voor de gebruiker.

PS: ontwikkelaars hebben liever dat hun programma’s lokaal draaien (binnen een gebruikerssessie) omdat een bug op die manier het hele systeem niet kan beïnvloeden.

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

In Ubuntu 12.1 was ik in staat om naar Systeem Instellingen- Gebruikers te gaan en een gebruiker te selecteren en “Automatisch aanmelden- Aan” te zetten.

Dan was ik in staat om tightVNC te gebruiken om in te loggen zonder in te loggen op de box zelf.

Werkte goed voor headless ubuntu linux box

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

Ik stel voor om ook de oplossing van Stephen Jennings te gebruiken als u meerdere vnc’s voor verschillende gebruikers nodig hebt, door gewoon meerdere vncserver_john, vncserver_bill, … bestanden aan te maken. Hierdoor kunt u ze afzonderlijk starten/stoppen. Zeker, goede programmeerpraktijken suggereren om de code die alle gebruikers gemeen hebben in één bestand te zetten, en het van alle andere te halen.

Ik heb de verantwoordelijkheid “geërfd” voor een server waarop verschillende collega’s wetenschappelijk programmeren en gegevens evalueren, iedereen met een aparte vnc. De server draait eigenlijk continu en stabiel over jaren, en gebruikers worden lui om hun open vensters op te slaan. Echter, afzonderlijke vncservers of X11 servers lopen soms vast, en het is een grote overlast om alle gebruikers af te sluiten om één server weer aan de praat te krijgen.