Wie starte ich VNC Server beim Booten?


29

Wie erstelle ich eine systemweite Autostart-Datei? Dies wäre auf einem Cloud-Server, auf dem die Desktop-Version von Maverick ausgeführt wird.

Ich habe mich als root angemeldet und mithilfe von eine Autostart-Datei erstellt System/Preferences/StartupApplications, diese wurde jedoch /root/.config/autostartbeim Neustart nicht ausgeführt (soweit ich das beurteilen kann). Die Autostart-Datei ruft ein Bash-Skript auf, das den VNC-Server aufruft.

Ich habe die .desktop-Autostart-Datei von /root/.config/autostartnach kopiert /etc/xdg/autostartund neu gestartet. Dies schien keinen Unterschied zu machen.

Bearbeiten Wie in einem Kommentar erwähnt, besteht das Ziel darin, mein Bash-Skript auszuführen, das den VNC-Server beim Booten startet. nicht bei einem Login.


Meinen Sie Autostart beim Booten oder Autostart, wenn sich jemand anmeldet?
fossfreedom

Ich möchte, dass der VNC-Server beim Booten automatisch startet.
H2ONaCl

1
Ich habe eine Antwort unter SU SE gefunden. Superuser.com/questions/147109/… probieren Sie es aus
wisemonkey 17.04.12

Benötigt VNC zum Ausführen keine Anzeige?
Desgua

Antworten:


19
  1. Installieren Sie zuerst den TightVNC-Server sudo apt-get install tightvncserver.

  2. Richten Sie den VNC-Server für den Benutzer ein, als den Sie sich anmelden möchten. Wenn Sie "vncserver" zum ersten Mal ausführen, werden Sie aufgefordert, ein Kennwort festzulegen. Nur SSH-Tunnel- oder VPN-Verbindungen zulassen. Ändern Sie, um Programme oder eine Sitzung zu starten, wenn Ihre VNC-Sitzung gestartet wird ~/.vnc/xstartup. Hier ist ein Beispiel.

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. Kopieren Sie das Folgende in /etc/init.d/vncserver. Am einfachsten kopieren Sie es in Ihre Zwischenablage, führen es sudo -i && cat > /etc/init.d/vncserver && exitin einem Terminal aus, fügen es ein und geben STRG-D ein. Stellen Sie sicher, dass Sie die Variable USER in den Benutzer ändern, unter dem der VNC-Server ausgeführt werden soll.

    #!/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. Machen Sie das Skript ausführbar mit sudo chmod +x /etc/init.d/vncserver.

  5. Stellen Sie schließlich über einen VNC-Client an Port 590X eine Verbindung zu Ihrem Server her, wobei X der Wert von "DISPLAY" im vncserver-Skript ist. Unter OS X verwende ich gerne Chicken of the VNC. Unter Windows und Linux funktioniert der TightVNC-Client einwandfrei.

Quelle


Diese superuser.com/questions/147109/... von wisemonkey ist die Stack äquivalente Antwort. Es klappt. Beachten Sie, dass der Pfad zu X11 möglicherweise angepasst werden muss.
H2ONaCl

TigerVNC installiert, /etc/init.d/vncserverwodurch alle vncserver gestartet werden, die in/etc/sysconfig/vncservers
Kashyap

5
Dies wurde von abdevelopment.ca/blog/start-vnc-server-ubuntu-boot kopiert , aber es hat den WICHTIGSTEN SCHRITT VERLASSENsudo update-rc.d vncserver defaults
Hai Phan

3

Eine Möglichkeit: /etc/rc.local

Der Inhalt sagt es:

# 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

Die Ausführungsbits sind auf meinem System bereits auf 755 gesetzt. (chmod 755 /etc/rc.local)

Sie können dort jeden Befehl eingeben, der als root ausgeführt wird.

Dies ist für Ihren Zweck in Ordnung, solange Sie die Runlevel nicht ändern, denke ich. (Wenn Sie nicht wissen, was Runlevel sind, vergiss es).


2
Dieser Vorschlag hat bei mir nicht funktioniert.
H2ONaCl


@CeesTimmerman, danke, aber diese 2 Verbesserungen haben nicht funktioniert.
H2ONaCl

2

Wenn Sie TigerVNC verwenden, wird es installiert, /etc/init.d/vncserverwodurch alle in ZB konfigurierten vncserver /etc/sysconfig/vncservers gestartet werden. Das Folgen würde 2 Instanzen auf Anzeige 1 & 2 beim Start starten.

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

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

2

Dies scheint ein alter Beitrag zu sein, aber das Thema könnte für einige Benutzer immer noch interessant sein. Damit vnc beim Booten startet, müssen Sie

  1. Installieren Sie eine VNC-Server-Software (hier verwenden wir X11VNC)
  2. Ein Startskript konfigurieren (wird zum Starten des vnc-Dienstes verwendet)

Schritt 1 - Installieren Sie den x11vnc-Server

Geben Sie in einer Befehlszeile Folgendes ein

 sudo apt-get install x11vnc

Um die Sicherheit zu erhöhen, sollten Sie eine pwd festlegen

sudo x11vnc -storepasswd

Schritt 2 - Konfigurieren Sie Ihr Startskript

  • Wenn Ihre Ubuntu-Version niedriger als 15.04 ist,

Sie erstellen die Konfigurationsdatei unter /etc/init.d/x11vnc.confund füllen sie mit den richtigen Befehlen, die ausgeführt werden sollen

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
  • Wenn Ihre Ubuntu-Version 15.04 oder neuer ist,

Diese Systeme verwenden systemd, und Sie müssen Ihre Service Unit-Datei unter erstellen /lib/systemd/system/x11vnc.service und mit den richtigen Befehlen auffüllen, die ausgeführt werden sollen

[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

Laden Sie den Dienst neu

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

Ausführliche Informationen finden Sie auf der Hilfeseite der Ubuntu-Community (siehe hier ). Sie können auch versuchen, dieses Schnellrezept zu verwenden

  • Überprüfen Sie für Ubuntu-Version niedriger als 15.04 diesen Beitrag
  • Für Ubuntu Version 15.04 oder höher , überprüfen Sie diesen Beitrag

Hoffe das ist hilfreich


1

Fügen Sie die folgende Zeile zur crontab-Datei hinzu. Dies bedeutet, dass der Befehl, nachdem das Schlüsselwort @rebootausgeführt wurde, während eines Neustarts ausgeführt wird.

@reboot /usr/bin/vncserver :1

Verwenden Sie zum Öffnen der crontab-Datei den Befehl crontab -e


Genauso wie diese 6-jährige Antwort: askubuntu.com/a/124079/158442
muru

0

Sie können cron Start Zeug für Sie beim Booten haben. Verwenden Sie einfach die Zeichenfolge "@reboot" anstelle der Zahlen, die Sie normalerweise verwenden, um anzugeben, wann das Objekt ausgeführt werden soll.

So starte ich Dropbox beispielsweise auf einem Computer, auf dem es sonst nicht automatisch gestartet wird:

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

Diese Seite besagt, dass dies nur funktioniert, wenn das System tatsächlich neu gestartet wird (kein Kaltstart).
Cees Timmerman

0

'sudo update-rc.d vncserver defaults' hat gemeldet, dass etwas fehlt. "Required-Stop:" (auch leer). Also habe ich es wie unten hinzugefügt. Und keine Warnung mehr.

    #!/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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.