Hier fallen mir ganz spontan zwei verschiedene Möglichkeiten ein:
beide Varianten
Damit man sich zum starten des VNC-Servers nicht immer im Container einloggen muss, sollte man sich ein Start-/Stop-Skript schreiben. Dazu kann man zum Beispiel so vorgehen:
# touch /etc/init.d/vncserver # chmod 0755 /etc/init.d/vncserver # vi /etc/init.d/vncserver # update-rc.d vncserver defaults 99 01
# vi /etc/init.d/vncserver
#! /bin/sh
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: $remote_fs $syslog $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Run vncserver
### END INIT INFO
AUFLOESUNG="1152x864"
VNCPORTOPT="1"
VNCSTARTCMD="vncserver -geometry ${AUFLOESUNG} :${VNCPORTOPT}"
VNCSTOPCMD="vncserver -kill :${VNCPORTOPT}"
PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start() {
log_begin_msg "Start ${VNCSTARTCMD}"
${VNCSTARTCMD}
ES=$?
log_end_msg $ES
return $ES
}
do_stop() {
log_begin_msg "Stop ${VNCSTOPCMD}"
${VNCSTOPCMD}
ES=$?
log_end_msg $ES
return $ES
}
do_status() {
VNCSTATUS="$(ps wx|fgrep -v grep|fgrep -v 'awk '|awk '/ Xvnc/{print $6}')"
if [ -n "${VNCSTATUS}" ] ; then
echo "Laufende VNC-Prozesse: '${VNCSTATUS}'"
else
echo "Es laufen keine VNC-Prozesse."
fi
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
sleep 1
do_start
;;
status)
do_status
;;
*)
echo "Usage: $0 start|stop|restart|status" >&2
exit 3
;;
esac
Wenn dieser Container nur den VNC-Prozess starten soll, und man mit dem Container nicht weiter anstellen will, dann genügt auch dieser "dirty hack":
# echo "* * * * * root vncserver -geometry 1152x864 :1 > /dev/null 2>&1" >> /var/lib/lxc/ContainerName/rootfs/etc/crontab
Hier wird der VNC-Server jede Minute einmal gestartet, wenn er bereits läuft, dann gibt es nur eine Meldung, die hier aber verworfen wird.
…und mann spart sich das Start-/Stop-Sktipt.