回答:
Googleで「起動時にubuntu launch vnc server」を検索して、これらの手順を見つけました。
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
より動的な構成と複数のユーザーに接続する機能が必要な場合は、これを行うより良い方法があります。ルートとしてファイル(および存在しない場合はディレクトリ)/ 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を最低1回実行する必要があります。そのステップをスキップすると、どれも機能しないので、私はそれをキャップに入れました。したがって、rootでできること:
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アドレスが通知されます。
作業が終了すると、Preferencesを再度実行して、共有許可...をオフにします。
環境設定を終了すると、vino-serverは停止し、共有オフ状態で起動した場合でも停止します。
この手順は非常に便利であり、ユーザーにとって最も安全であると思います。
PS:バグはグローバルシステムにそのような影響を与えないため、開発者はプログラムをローカル(ユーザーセッション内)で実行することを好みます。
Ubuntu 12.1では、システム設定->ユーザーに移動してユーザーを選択し、「自動ログイン->オン」を設定することができました
それから、tightVNCを使用して、ボックス自体にログインせずにログインすることができました。
ヘッドレスubuntu Linuxボックスでうまく機能しました
複数のvncserver_john、vncserver_bill、...ファイルを作成するだけで、異なるユーザーに複数のvncが必要な場合にも、Stephen jenningsソリューションを使用することをお勧めします。これにより、それらを個別に開始/停止できます。確かに、優れたプログラミングの実践では、すべてのユーザーに共通のコードを1つのファイルに入れ、他のすべてのファイルからソースを取得することをお勧めします。
私は、複数の同僚が科学プログラミングやデータ評価を行うサーバーに対して責任を「継承」しています。全員が個別のvncを持っています。サーバーは実際には何年にもわたって継続的に安定して動作し、ユーザーは開いているウィンドウを保存するのが面倒になります。ただし、単一のvncserverまたはX11サーバーがスタックすることがあり、すべてのユーザーをシャットダウンして1つのサーバーを再度実行することは大きな迷惑です。