Jak uruchomić VNC Server przy rozruchu?

29

Jak utworzyć ogólnosystemowy plik autostartu? Byłoby to na serwerze w chmurze z uruchomioną komputerową wersją Maverick.

Zalogowałem się jako root i utworzyłem plik autostartu przy użyciu, System/Preferences/StartupApplicationsale skończył się /root/.config/autostarti nie uruchomił się (o ile wiem) po ponownym uruchomieniu. Plik autostartu ma wywołać skrypt bash, który wywołuje serwer VNC.

Skopiowałem plik autostartu .desktop z /root/.config/autostartdo /etc/xdg/autostarti zrestartowałem. To nie miało znaczenia.

Edytuj Jak wspomniano w komentarzu, celem jest uruchomienie mojego skryptu bash, który uruchamia serwer VNC po uruchomieniu; nie po zalogowaniu.

H2ONaCl
źródło
masz na myśli autostart podczas uruchamiania lub autostart, gdy ktoś (ktokolwiek) się zaloguje?
fossfreedom
Chcę, aby serwer VNC uruchamiał się automatycznie podczas rozruchu.
H2ONaCl
1
Znalazłem odpowiedź na stronie SU SE superuser.com/questions/147109/ ... spróbuj
wisemonkey
Czy VNC nie wymaga wyświetlacza do uruchomienia?
desgua

Odpowiedzi:

19
  1. Najpierw zainstaluj serwer TightVNC sudo apt-get install tightvncserver.

  2. Skonfiguruj serwer VNC dla użytkownika, którego chcesz się zalogować. Kiedy uruchomisz „vncserver” po raz pierwszy, poprosi cię o ustawienie hasła. zezwalaj tylko na połączenia tunelowane SSH lub połączenia VPN. Aby uruchomić programy lub sesję po rozpoczęciu sesji VNC, zmodyfikuj ~/.vnc/xstartup. Oto przykład.

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. Skopiuj następujące elementy do /etc/init.d/vncserver. Najłatwiej to zrobić, kopiując go do schowka, uruchamiając sudo -i && cat > /etc/init.d/vncserver && exitw terminalu, wklejając i wpisując CTRL-D. Zmień zmienną USER na dowolnego użytkownika, pod którym ma działać serwer 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. Spraw, aby skrypt był wykonywalny za pomocą sudo chmod +x /etc/init.d/vncserver.

  5. Na koniec połącz się z serwerem za pomocą klienta VNC na porcie 590X, gdzie X jest wartością „DISPLAY” w skrypcie vncserver. W OS X lubię używać Chicken of the VNC. W systemach Windows i Linux klient TightVNC działa dobrze.

Źródło

maniat1k
źródło
Ten superuser.com/questions/147109/... od wisemonkey jest równoważną odpowiedzią na stos wymiany. To działa. Uwaga: ścieżka do X11 może wymagać dostosowania.
H2ONaCl
TigerVNC instaluje, /etc/init.d/vncserverktóry uruchamia wszystkie serwery vncserver skonfigurowane w/etc/sysconfig/vncservers
Kashyap
5
Został on skopiowany z abdevelopment.ca/blog/start-vnc-server-ubuntu-boot , ale WYJŚCIE Z NAJWAŻNIEJSZEGO KROKUsudo update-rc.d vncserver defaults
Hai Phan
3

Jedna możliwość: /etc/rc.local

Treść mówi:

# 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

Bity wykonania są już ustawione na 755 w moim systemie. (chmod 755 /etc/rc.local)

Możesz w nim umieścić dowolne polecenie, które zostanie wykonane jako root.

Wydaje mi się, że jest to w porządku dla twojego celu, dopóki nie zmienisz poziomów pracy. (Jeśli nie wiesz, jakie są poziomy pracy, nieważne).

Tobiasz
źródło
2
Ta sugestia nie działała dla mnie.
H2ONaCl
Te 2 poprawki mogą pomóc.
Cees Timmerman,
@CeesTimmerman, dziękuję, ale te 2 poprawki nie działały.
H2ONaCl
2

Jeśli używasz TigerVNC, wówczas instaluje się, /etc/init.d/vncserverco uruchamia wszystkie serwery vncserver skonfigurowane w /etc/sysconfig/vncservers Eg. Następujące uruchomiłyby 2 instancje na wyświetlaczu 1 i 2 podczas uruchamiania.

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

VNCSERVERS="2:guest"
VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"
Kashyap
źródło
2

wydaje się, że jest to stary post, ale temat może być nadal interesujący dla niektórych użytkowników. Aby mieć vnc do uruchomienia podczas uruchamiania, musisz

  1. zainstaluj oprogramowanie serwera vnc (tutaj będziemy używać x11vnc)
  2. skonfiguruj skrypt startowy (używany do uruchomienia usługi VNC)

Krok 1 - zainstaluj serwer x11vnc

w wierszu polecenia wpisz

 sudo apt-get install x11vnc

Aby dodać bezpieczeństwo, powinieneś ustawić pwd

sudo x11vnc -storepasswd

Krok 2 - Skonfiguruj skrypt uruchamiania

  • jeśli twoja wersja Ubuntu jest niższa 15.04,

tworzysz plik konfiguracyjny pod /etc/init.d/x11vnc.confi wypełniasz go prawidłowymi poleceniami do wykonania

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
  • jeśli twoja wersja Ubuntu to 15.04 lub nowsza,

systemy te używają systemd i konieczne będzie utworzenie pliku jednostki usługowej pod /lib/systemd/system/x11vnc.service i wypełnienie go odpowiednimi komendami do wykonania

[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

Załaduj ponownie usługę

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

Możesz znaleźć szczegółowe informacje na stronie Wiki Pomocy Społeczności Ubuntu (patrz tutaj ) lub możesz spróbować użyć tego szybkiego w użyciu przepisu

  • W przypadku wersji Ubuntu niższej niż 15.04 sprawdź ten post
  • W przypadku Ubuntu w wersji 15.04 lub nowszej sprawdź ten post

Mam nadzieję, że to jest pomocne

Gryfon
źródło
1

Dodaj poniższy wiersz do pliku crontab. Oznacza to, że polecenie po wykonaniu słowa kluczowego @rebootpodczas bardzo restartu.

@reboot /usr/bin/vncserver :1

Aby otworzyć plik crontab, musisz użyć polecenia crontab -e

rashok
źródło
To samo co ta 6-letnia odpowiedź: askubuntu.com/a/124079/158442
mur
0

Możesz mieć cron start rzeczy dla ciebie w czasie rozruchu. Wystarczy użyć ciągu „@reboot” zamiast liczb, których zwykle używasz, aby określić, kiedy rzecz ma się uruchomić.

Na przykład oto jak uruchomić Dropbox na maszynie, na której inaczej nie uruchomi się automatycznie:

# m h  dom mon dow   command
@reboot         /usr/bin/dropbox start
offby1
źródło
Ta strona mówi, że działa tylko wtedy, gdy system faktycznie uruchomi się ponownie (bez zimnego rozruchu).
Cees Timmerman,
0

„sudo update-rc.d vncserver defaults” zgłosił brak; „Required-Stop:” (nawet pusty). Więc dodałem to jak poniżej. I nigdy więcej ostrzeżeń.

    #!/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
Paulsk
źródło