UbuntuデスクトップをUbuntu 9.10 VPSサーバーにインストールしましたが、TightVNCを使用してサーバーに接続できます。ただし、このVPS上のVNCサーバーは、SSH経由でログインして次のコマンドを入力することによってのみ起動できます。
vncserver :1 -geometry 800x600 -depth 16 -pixelformat rgb565
起動時またはスケジュールタスクとしてこのコマンドを実行すると、起動しません。私のオプションは何ですか?
Googleで「 buntu launch vnc server on startup "」を検索して これらの手順 を見つけました。
vncserver
を初めて起動してパスワードを設定します。/etc/init.d/vncserver
として追加します(USER、GEOMETRY、NAMEなどを必要に応じて変更してください)。Sudo chmod +x /etc/init.d/vncserver
Sudo update-rc.d vncserver defaults
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Default-Start: S
# 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
より動的な構成と複数のユーザーの接続機能が必要な場合は、これを行うより良い方法があります。 rootとしてファイル(および存在しない場合はディレクトリ)/ etc/sysconfig/vncserversを作成します。
mkdir -p /etc/vncserver
touch /etc/vncserver/vncservers.conf
作成したvncservers.confファイルに次のようなものを追加して、各ユーザーの必要に応じてサーバーを追加します。
VNCSERVERS="1:justin 2:bob"
VNCSERVERARGS[1]="-geometry 1920x1080 -depth 24"
VNCSERVERARGS[2]="-geometry 800x600 -depth 8"
次に、空のinitスクリプトを作成して実行可能にします。
touch /etc/init.d/vncserver
chmod +x /etc/init.d/vncserver
以下を/etc/init.d/vncserverに追加します。
#!/bin/bash
unset VNCSERVERARGS
VNCSERVERS=""
[ -f /etc/vncserver/vncservers.conf ] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"
start() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Starting $prog: "
ulimit -S -c 0 >/dev/null 2>&1
RETVAL=0
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
DISP="${display%%:*}"
export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
fi
done
}
stop() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Shutting down VNCServer: "
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
export USER="${display##*:}"
su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
fi
done
echo -e "\n"
echo "VNCServer Stopped"
}
case "$1" in
start)
start $@
;;
stop)
stop $@
;;
restart|reload)
stop $@
sleep 3
start $@
;;
condrestart)
if [ -f /var/lock/subsys/vncserver ]; then
stop $@
sleep 3
start $@
fi
;;
status)
status Xvnc
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
Stephenが彼の回答で述べたように、vncserverを実行する必要がありますATログインする各ユーザーとして少なくとも1回。この手順をスキップすると、どれも機能しないため、大文字で入力します。したがって、ルートとして次のことができます。
su justin -c vncserver
su bob -c vncserver
これにより、適切な起動スクリプトを使用して、各ユーザーのホームディレクトリに.vncディレクトリが作成されます。
最後に、以下を実行します。
update-rc.d vncserver defaults 99
これで、次のように入力して、サービスを手動で再起動または開始できます。
service vncserver start
私は、サポートしている友達のUbuntuにアクセスし、インストールまたは構成したり、何かを教えたりします。
インターネット経由でモデムを介してアクセスする必要があるため、vinoを使用しています。
アクセス中は、すべての共有オプションとセキュリティオプションがオンになります。
vino-serverを常にアクティブにしておく必要はありません。自動起動しなくても問題ありません。
システム>リモートデスクトップメニューがありませんでした。
/usr/share/applications/vino-preferences.desktopを次のように編集しました:
# OnlyShowIn=Unity;
Exec=bash -c 'vino-preferences;/usr/lib/vino/vino-server&zenity --info --text="Accès par Internet: `curl http://ipecho.net/plain`:5900"'
仕事を始める前に、友達にリモートデスクトップの設定を実行して、[共有を許可...]をオンにするよう依頼します。
環境設定を終了すると、vino-serverが起動し、使用するIPアドレスが表示されます。
作業が完了すると、ユーザーは再度設定を実行して、共有許可をオフにします。
環境設定を終了すると、vino-serverが停止し、共有オフ状態で開始した場合でも停止します。
この手順は非常に便利であり、ユーザーにとって最も安全です。
PS:バグはグローバルシステムに影響を与えないため、開発者はプログラムをローカル(ユーザーセッション内)で実行することを好みます。
Ubuntu 12.1では、[システム設定]-> [ユーザー]に移動してユーザーを選択し、[自動ログイン]-> [オン]に設定できました。
その後、tightVNCを使用して、ボックス自体にログインせずにアクセスできました。
ヘッドレスUbuntu Linuxボックスでうまく機能
いくつかのvncserver_john、vncserver_bill、...ファイルを作成するだけで、ユーザーごとに複数のvncが必要な場合にも、stephen jenningsソリューションを使用することをお勧めします。これにより、個別に開始/停止できます。確かに、優れたプログラミング方法では、すべてのユーザーに共通のコードを1つのファイルにまとめ、他のすべてのユーザーからコードを入手することをお勧めします。
私は、複数の同僚が科学的なプログラミングとデータの評価を行うサーバーに対して「継承」の責任を負っています。サーバーは実際には何年にもわたって継続的に安定して動作し、ユーザーは開いているウィンドウを保存するのが面倒になります。ただし、単一のvncserversまたはX11サーバーがスタックする場合があり、すべてのユーザーをシャットダウンして1つのサーバーを再度実行するのは非常に厄介です。