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.


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


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).


2
Ta sugestia nie działała dla mnie.
H2ONaCl


@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"

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


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


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.