Come posso avviare VNC Server all'avvio?


29

Come faccio a creare un file di avvio automatico a livello di sistema? Questo sarebbe su un server cloud che esegue la versione desktop di Maverick.

Ho effettuato l'accesso come root e ho creato un file di System/Preferences/StartupApplicationsavvio automatico utilizzando ma è finito /root/.config/autostarte non è stato eseguito (per quanto posso dire) al riavvio. Il file di avvio automatico è invocare uno script bash che richiama il server VNC.

Ho copiato il file di avvio automatico .desktop da /root/.config/autostarta /etc/xdg/autostarted ho ripartito. Questo non sembra fare la differenza.

Modifica Come menzionato in un commento, l'obiettivo è eseguire il mio script bash che avvia il server VNC all'avvio; non al momento del login.


intendi l'avvio automatico all'avvio o l'avvio automatico quando qualcuno (qualcuno) accede?
Fossfreedom

Voglio che il server VNC si avvii automaticamente all'avvio.
H2ONaCl

1
Ho trovato una risposta su SU SE superuser.com/questions/147109/… provalo
wisemonkey

VNC non richiede un display per funzionare?
desgua,

Risposte:


19
  1. Innanzitutto, installa il server TightVNC sudo apt-get install tightvncserver.

  2. Configurare il server VNC per l'utente con il quale si desidera accedere. Quando si esegue "vncserver" per la prima volta, verrà richiesto di impostare una password. consentire solo connessioni VPN o SSH sintonizzate. Per avviare programmi o una sessione all'avvio della sessione VNC, modificare ~/.vnc/xstartup. Ecco un esempio

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. Copia quanto segue in /etc/init.d/vncserver. Il modo più semplice per farlo è copiarlo negli Appunti, eseguirlo sudo -i && cat > /etc/init.d/vncserver && exitin un terminale, incollarlo e digitare CTRL-D. Assicurati di cambiare la variabile USER in qualunque utente tu voglia eseguire il server VNC.

    #!/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. Rendi eseguibile lo script con sudo chmod +x /etc/init.d/vncserver.

  5. Infine, connettiti al tuo server con un client VNC sulla porta 590X, dove X è il valore di "DISPLAY" nello script vncserver. Su OS X, mi piace usare Chicken of the VNC. Su Windows e Linux, il client TightVNC funziona bene.

fonte


Questo superuser.com/questions/147109/… di wisemonkey è la risposta equivalente a stackexchange. Funziona. Nota che potrebbe essere necessario modificare il percorso di X11.
H2ONaCl

TigerVNC installa /etc/init.d/vncserverche avvia tutti i server virtuali configurati in/etc/sysconfig/vncservers
Kashyap,

5
Questo è stato copiato e incollato da abdevelopment.ca/blog/start-vnc-server-ubuntu-boot , ma è uscito il passaggio più importantesudo update-rc.d vncserver defaults
Hai Phan,

3

Una possibilità: /etc/rc.local

Il contenuto lo dice:

# 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

I bit di esecuzione sono già impostati su 755 sul mio sistema. (chmod 755 /etc/rc.local)

Puoi inserire qualsiasi comando lì, che verrà eseguito come root.

Questo va bene per il tuo scopo finché non cambi i runlevel, immagino. (Se non sai cosa sono i runlevel, non importa).


2
Questo suggerimento non ha funzionato per me.
H2ONaCl

Queste 2 modifiche possono essere d'aiuto.
Cees Timmerman,

@CeesTimmerman, grazie ma quei 2 ritocchi non hanno funzionato.
H2ONaCl

2

Se si utilizza TigerVNC, viene installato il programma /etc/init.d/vncserverche avvia tutti i vncserver configurati in /etc/sysconfig/vncservers Esempio. Seguirebbe l'avvio di 2 istanze sul display 1 e 2 all'avvio.

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

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

2

questo sembra essere un vecchio post ma l'argomento potrebbe essere ancora interessante per alcuni utenti. Per avviare Vnc all'avvio, è necessario

  1. installa un software server vnc (qui useremo x11vnc)
  2. configurare uno script di avvio (utilizzato per avviare il servizio vnc)

Passaggio 1: installare il server x11vnc

da una riga di comando, digitare

 sudo apt-get install x11vnc

Per aggiungere sicurezza, è necessario impostare un pwd

sudo x11vnc -storepasswd

Passaggio 2: configura lo script di avvio

  • se la tua versione di Ubuntu è precedente alla 15.04,

crei il file di configurazione sotto /etc/init.d/x11vnc.confe lo popoli con i comandi corretti da eseguire

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
  • se la tua versione di Ubuntu è 15.04 o successiva,

questi sistemi utilizzano systemd e sarà necessario creare il file dell'unità di servizio in /lib/systemd/system/x11vnc.service e popolarlo con i comandi corretti da eseguire

[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

Ricarica il servizio

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

Puoi trovare informazioni dettagliate nella pagina della Guida della community di Ubuntu (vedi qui ) oppure puoi provare a usare questo destinatario rapido

  • Per la versione di Ubuntu precedente alla 15.04 , controlla questo post
  • Per Ubuntu versione 15.04 o successiva , controlla questo post

Spero sia utile


1

Aggiungi la riga seguente al file crontab. Ciò significa che il comando dopo la parola chiave @rebootviene eseguito durante il riavvio.

@reboot /usr/bin/vncserver :1

Per aprire il file crontab, è necessario utilizzare il comando crontab -e


Lo stesso di questa risposta di 6 anni: askubuntu.com/a/124079/158442
muru,

0

Puoi avere cron start roba per te all'avvio. Usa semplicemente la stringa "@reboot" al posto dei numeri che usi normalmente per specificare quando eseguire la cosa.

Ad esempio, ecco come avvio Dropbox su una macchina su cui altrimenti non si avvia automaticamente:

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

Questa pagina dice che funziona solo se il sistema si riavvia effettivamente (senza avvio a freddo).
Cees Timmerman,

0

'sudo update-rc.d vncserver defaults' ha riferito che mancava; "Required-Stop:" (anche vuoto). Quindi l'ho aggiunto come di seguito. E niente più avvertimenti.

    #!/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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.