如何在启动时启动VNC服务器?
如何创建系统范围的自动启动文件? 这将在运行桌面版Maverick的云服务器上。
我以root身份登录并使用System/Preferences/StartupApplications
/root/.config/autostart
创建了一个自动启动文件,但它最终在/root/.config/autostart
并且在重新启动时没有执行(据我所知)。 自动启动文件用于调用调用VNC服务器的bash脚本。
我将.desktop自动启动文件从/root/.config/autostart
复制到/etc/xdg/autostart
并重新启动。 这似乎没有什么区别。
编辑如评论中所述,目标是运行我的bash脚本,在启动时启动VNC服务器; 不登录
-
首先,安装TightVNC服务器
sudo apt-get install tightvncserver
。 -
为您要登录的用户设置VNC服务器。 当您第一次运行“vncserver”时,它会要求您设置密码。 仅允许SSH隧道连接或VPN连接。 要在VNC会话启动时启动程序或会话,请修改
~/.vnc/xstartup
。 这是一个例子。#!/bin/sh xrdb $HOME/.Xresources xsetroot -solid black /opt/azureus/azureus & k3b & icewm-session &
-
将以下内容复制到
/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="
x " #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 -
使用
sudo chmod +x /etc/init.d/vncserver
使脚本可执行。 - 最后,使用端口590X上的VNC客户端连接到您的服务器,其中X是vncserver脚本中“DISPLAY”的值。 在OS X上,我喜欢使用VNC的Chicken。 在Windows和Linux上,TightVNC客户端运行良好。
资源
一种可能性:/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身份执行。
只要你不改变运行级别,这对你的目的是好的,我想。 (如果你不知道什么是运行级别,请不要担心)。
如果您正在使用TigerVNC,那么它将安装/etc/init.d/vncserver
,它启动在/etc/sysconfig/vncservers
配置的所有vncservers。例如,以下将在启动时在显示器1和2上启动2个实例。
# : VNCSERVERS="1:root" VNCSERVERARGS[1]="-geometry 1920x1080" VNCSERVERS="2:guest" VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"
这似乎是一个老post,但对于一些用户来说这个主题可能仍然很有趣。 要让vnc在启动时启动,您需要
- 安装vnc服务器软件(这里我们将使用x11vnc)
- 配置启动脚本(用于启动vnc服务)
第1步 – 安装x11vnc服务器
从命令行输入
sudo apt-get install x11vnc
要添加安全性,您应该设置一个pwd
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
您可以在帮助Ubuntu社区维基页面上找到详细信息(请参阅此处 ),或者您可以尝试使用此快速使用收件人
- 对于低于15.04的 Ubuntu版本,请查看此post
- 对于Ubuntu 15.04或更高版本 ,请查看此post
希望这有用
将以下行添加到crontab文件。 这意味着在非常重启期间执行关键字@reboot
之后的命令。
@reboot /usr/bin/vncserver :1
要打开crontab文件,需要使用命令crontab -e
你可以在启动时让cron启动你的东西。 只需使用字符串“@reboot”代替通常用于指定事物何时运行的数字。
例如,这是我如何在一台机器上启动Dropbox,否则它不会自动启动:
# mh dom mon dow command @reboot /usr/bin/dropbox start
‘sudo update-rc.d vncserver defaults’报告说丢失了; “必需 – 停止:”(甚至是空的)。 所以我在下面添加了它。 没有更多的警告。
#!/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