Ubuntu環境下,如何讓VNC開機自動運行

前言

這篇是從回答「這篇」,整理而來。

測試環境

  • Lubuntu 14.04 32位元測試的

新增 Service

產生一個「service」檔案「/etc/init.d/vnc」。

1
$ sudo vi /etc/init.d/vnc

貼入以下內容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
PATH="$PATH:/usr/bin/"
export USER="sam"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
. /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 "Stopping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

restart)
$0 stop
$0 start
;;

*)
echo "Usage: /etc/init.d/vnc (start|stop|restart)"
exit 1
;;
esac

exit 0

將「/etc/init.d/vnc」存檔。

然後將「/etc/init.d/vnc」改為可執行權限。

1
$ sudo chomod +x /etc/init.d/vnc

另外我有修改「~/.vnc/xstartup」這個檔。

因為我是在這篇「如何安裝LXQt」裝好的環境測試的,所以改成「startlxqt &」。

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
startlxqt &

存檔後,就可已執行下面的命令來測測試

測試

啟動服務

1
2
$ sudo service vnc start
# sudo /etc/init.d/vnc start

用client連線測試

1
$ vncviewer localhost:5901

重起服務

1
2
$ sudo service vnc restart
# sudo /etc/init.d/vnc restart

關閉服務

1
2
$ sudo service vnc stop
# sudo /etc/init.d/vnc stop

設定開機自動啟動

執行下面的指令

1
$ sudo update-rc.d vnc defaults

可以看到下面訊息

1
2
3
4
5
6
7
8
9
10
update-rc.d: warning: /etc/init.d/vnc missing LSB information
update-rc.d: see <https://wiki.debian.org/LSBInitScripts>
Adding system startup for /etc/init.d/vnc ...
/etc/rc0.d/K20vnc -> ../init.d/vnc
/etc/rc1.d/K20vnc -> ../init.d/vnc
/etc/rc6.d/K20vnc -> ../init.d/vnc
/etc/rc2.d/S20vnc -> ../init.d/vnc
/etc/rc3.d/S20vnc -> ../init.d/vnc
/etc/rc4.d/S20vnc -> ../init.d/vnc
/etc/rc5.d/S20vnc -> ../init.d/vnc

也就是會產生下面幾個檔

1
2
3
4
5
6
7
/etc/rc0.d/K20vnc
/etc/rc1.d/K20vnc
/etc/rc6.d/K20vnc
/etc/rc2.d/S20vnc
/etc/rc3.d/S20vnc
/etc/rc4.d/S20vnc
/etc/rc5.d/S20vnc

查看一下

1
$ ls -l /etc/rc?.d/*vnc

應該會顯示雷同下面的列表

1
2
3
4
5
6
7
lrwxrwxrwx 1 root root 13 Feb 26 16:08 /etc/rc0.d/K20vnc -> ../init.d/vnc
lrwxrwxrwx 1 root root 13 Feb 26 16:08 /etc/rc1.d/K20vnc -> ../init.d/vnc
lrwxrwxrwx 1 root root 13 Feb 26 16:08 /etc/rc2.d/S20vnc -> ../init.d/vnc
lrwxrwxrwx 1 root root 13 Feb 26 16:08 /etc/rc3.d/S20vnc -> ../init.d/vnc
lrwxrwxrwx 1 root root 13 Feb 26 16:08 /etc/rc4.d/S20vnc -> ../init.d/vnc
lrwxrwxrwx 1 root root 13 Feb 26 16:08 /etc/rc5.d/S20vnc -> ../init.d/vnc
lrwxrwxrwx 1 root root 13 Feb 26 16:08 /etc/rc6.d/K20vnc -> ../init.d/vnc

這時候重開機,應該就會自動啟動vncserver了。

若要移除上面產生的檔只要執行

1
$ sudo update-rc.d -f vnc remove

另外還有幾篇可以參考的文章