如何在启动时启动VNC服务器?


29

如何创建系统范围的自动启动文件?这将在运行桌面版Maverick的云服务器上。

我以root用户身份登录,并使用创建了一个自动启动文件,System/Preferences/StartupApplications但该文件最终/root/.config/autostart以重新启动后未执行(据我所知)的情况发生。自动启动文件将调用bash脚本,该脚本将调用VNC服务器。

我将.desktop自动启动文件从复制/root/.config/autostart/etc/xdg/autostart并重新启动。这似乎没有什么不同。

编辑如评论中所述,目标是运行我的bash脚本,该脚本在启动时启动VNC服务器。不在登录时。


您是说在启动时自动启动还是在某人(任何人)登录时自动启动?
fossfreedom

我希望VNC服务器在启动时自动启动。
H2ONaCl 2012年

1
我在SU SE superuser.com/questions/147109/上找到了答案。尝试一下
wisemonkey 2012年

VNC是否需要显示器才能运行?
desgua 2012年

Answers:


19
  1. 首先,安装TightVNC服务器 sudo apt-get install tightvncserver

  2. 为您要登录的用户设置VNC服务器。首次运行“ vncserver”时,它将要求您设置密码。仅允许SSH隧道连接或VPN连接。要在VNC会话启动时启动程序或会话,请修改~/.vnc/xstartup。这是一个例子。

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. 将以下内容复制到中/etc/init.d/vncserver。最简单的方法是将其复制到剪贴板,sudo -i && cat > /etc/init.d/vncserver && exit在终端中运行,粘贴并键入CTRL-D。确保将USER变量更改为希望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. 使脚本可执行sudo chmod +x /etc/init.d/vncserver

  5. 最后,使用端口590X上的VNC客户端连接到服务器,其中X是vncserver脚本中“ DISPLAY”的值。在OS X上,我喜欢使用VNC的Chicken。在Windows和Linux上,TightVNC客户端运行良好。

资源


superuser.com/questions/147109/...从wisemonkey是stackexchange相当于答案。有用。请注意,到X​​11的路径可能需要调整。
H2ONaCl 2012年

TigerVNC安装/etc/init.d/vncserver将启动在/etc/sysconfig/vncservers
Kashyap

5
这是从abdevelopment.ca/blog/start-vnc-server-ubuntu-boot复制粘贴的,但是它却留下了最重要的一步sudo update-rc.d vncserver defaults
Hai Phan

3

一种可能性:/etc/rc.local

内容说:

# 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

在我的系统上,执行位已设置为755。(chmod 755 /etc/rc.local)

您可以在其中放置任何命令,这些命令将以root身份执行。

我想,只要您不更改运行级别,就可以实现您的目的。(如果您不知道运行级别是什么,请不要介意)。


2
这个建议对我没有用。
H2ONaCl 2012年

这两个调整可能会有所帮助。
Cees Timmerman

@CeesTimmerman,谢谢,但是这两个调整没有用。
H2ONaCl 2012年

2

如果您使用的是TigerVNC,则它将安装/etc/init.d/vncserver并启动在/etc/sysconfig/vncservers Eg中配置的所有vncserver,随后将在启动时启动显示1和2的2个实例。

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

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

2

这似乎是一个过时的帖子,但对于某些用户而言,该主题可能仍然很有趣。要使vnc在启动时启动,您需要

  1. 安装vnc服务器软件(此处将使用x11vnc)
  2. 配置启动脚本(用于启动vnc服务)

第1步-安装x11vnc服务器

从命令行输入

 sudo apt-get install x11vnc

为了增加安全性,您应该设置一个密码

sudo x11vnc -storepasswd

第2步-配置启动脚本

  • 如果您的Ubuntu版本低于15.04,

您在下面创建配置文件,/etc/init.d/x11vnc.conf并使用要执行的正确命令填充该文件

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
  • 如果您的ubuntu版本是15.04或更高版本,

这些系统正在使用systemd,您将需要在其下创建服务单元文件,/lib/systemd/system/x11vnc.service 并使用要执行的正确命令填充该文件

[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

重新加载服务

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

您可以在Help Ubuntu Community Wiki页面上找到详细信息(请参阅此处),也可以尝试使用此快速易用的接收方

  • 对于低于15.04的 Ubuntu版本,请查看此帖子
  • 对于Ubuntu 15.04或更高版本,请查看此帖子

希望这会有所帮助


1

将以下行添加到crontab文件。这意味着@reboot在非常重启期间执行关键字之后的命令。

@reboot /usr/bin/vncserver :1

要打开crontab文件,需要使用以下命令 crontab -e


与这个6岁的孩子相同的答案:askubuntu.com/a/124079/158442
muru

0

您可以在启动时为cron启动内容。只需使用字符串“ @reboot”代替您通常用于指定事物应在何时运行的数字。

例如,这是我在无法自动启动的机器上启动Dropbox的方式:

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

该页面说,只有在系统实际重新引导(不进行冷引导)的情况下,该选项才起作用。
Cees Timmerman

0

“ sudo update-rc.d vncserver默认值”报告缺少该内容;“必需的停止:”(甚至为空)。所以我像下面一样添加了它。再也没有警告。

    #!/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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.