web-dev-qa-db-ja.com

起動時にVNCサーバーを起動するにはどうすればよいですか?

システム全体の自動起動ファイルを作成するにはどうすればよいですか?これは、デスクトップバージョンのMaverickを実行しているクラウドサーバー上にあります。

ルートとしてログインし、System/Preferences/StartupApplicationsを使用して自動起動ファイルを作成しましたが、最終的に/root/.config/autostartになり、再起動時に実行されませんでした(わかる限り)。自動起動ファイルは、VNCサーバーを呼び出すbashスクリプトを呼び出すためのものです。

.desktop自動起動ファイルを/root/.config/autostartから/etc/xdg/autostartにコピーして再起動しました。これは違いをもたらさないようでした。

編集コメントで述べたように、目的はブート時にVNCサーバーを起動するbashスクリプトを実行することです。ログイン時ではありません。

26
H2ONaCl
  1. まず、TightVNCサーバーSudo apt-get install tightvncserverをインストールします。

  2. ログインするユーザーのVNCサーバーを設定します。初めて「vncserver」を実行すると、パスワードの設定を求められます。 SSHトンネル接続またはVPN接続のみを許可します。 VNCセッションの開始時にプログラムまたはセッションを起動するには、~/.vnc/xstartupを変更します。以下に例を示します。

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. 以下を/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="<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
    
  4. Sudo chmod +x /etc/init.d/vncserverを使用してスクリプトを実行可能にします。

  5. 最後に、ポート590XでVNCクライアントを使用してサーバーに接続します。Xはvncserverスクリプトの「DISPLAY」の値です。 OS Xでは、VNCのChickenを使用します。 WindowsおよびLinuxでは、TightVNCクライアントはうまく機能します。

ソース

19
maniat1k

1つの可能性:/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)

そこに任意のコマンドを入れることができ、それらはルートとして実行されます。

ランレベルを変更しない限り、これはあなたの目的には問題ありません。 (ランレベルが何であるかわからない場合は、気にしないでください)。

3
Tobias

これは古い投稿のようですが、一部のユーザーにとってはこのトピックはまだ興味深いかもしれません。起動時にvncを起動するには、以下が必要です。

  1. vncサーバーソフトウェアをインストールします(ここではx11vncを使用します)
  2. スタートアップスクリプトの構成(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 CommunityのヘルプWikiページで詳細情報を見つけることができます( here を参照してください)。

  • Ubuntuバージョンの場合15.04より低いこの投稿 を確認してください
  • Ubuntuバージョンの場合15.04以降、チェック この投稿

これがお役に立てば幸いです

2
Griffon

TigerVNCを使用している場合、/etc/init.d/vncserverがインストールされ、/etc/sysconfig/vncserversで設定されたすべてのvncserverが起動します。以下は、起動時にディスプレイ1と2で2つのインスタンスを起動します。

# <display>:<user>
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1920x1080"

VNCSERVERS="2:guest"
VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"
2
Kashyap

以下の行をcrontabファイルに追加します。これは、キーワード@rebootの後のコマンドが再起動中に実行されることを意味します。

@reboot /usr/bin/vncserver :1

Crontabファイルを開くには、crontab -eコマンドを使用する必要があります

1
rashok

「sudo update-rc.d vncserver defaults」は、欠落していることを報告しました。 「Required-Stop:」(空であっても)。以下のように追加しました。そしてこれ以上の警告はありません。

    #!/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
0
Paulsk

起動時にcronを起動させることができます。 Thingを実行するタイミングを指定するために通常使用する番号の代わりに、文字列「@reboot」を使用します。

たとえば、他の方法では自動的に起動しないマシンでDropboxを起動する方法は次のとおりです。

# m h  dom mon dow   command
@reboot         /usr/bin/dropbox start
0
offby1