Ubuntu

如何在 Ubuntu 10.04 中啟動 VNC 伺服器

  • November 2, 2013

我已經為此苦苦掙扎了足夠長的時間來提出另一個啟動腳本問題。

我有一個相對簡單的啟動腳本,即:

### BEGIN INIT INFO
# Provides:          startVNC
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      
# Short-Description: Start VNC server at boot time
# Description:       Test
### END INIT INFO

#!/bin/sh
echo "JOB RUN AT $(date)"
echo "============================"
echo ""
/usr/bin/vncserver -geometry 1280x1024 -depth 24

顯然,只有最後一行才是真正重要的。該腳本是可執行的,即。

ls -l startVNC

產量:

-rwxr-xr-x 1 root root 406 2011-12-07 15:45 startVNC

當我在my_uservncserver 啟動時通過 ssh 登錄並執行它時,我可以從我的桌面看到 GUI。所以我嘗試了 5 件事讓它在啟動時執行:

  1. 將我的腳本複製到/etc/init.d/,呼叫update-rc.d -f startVNC defaults(也使用99afterdefaults以確保vncserver所依賴的所有內容都已執行)。我檢查了/etc/rcX.d/文件夾中所有生成的符號連結。但它在重新啟動或啟動時不起作用
  2. 將我的腳本添加到/etc/rc.local之前exit 0
  3. 添加crontab -e@reboot /home/my_user/scripts/startVNC
  4. 將我的腳本添加到/etc/init.d/rcS
  5. 將我的腳本添加到 System -> Preferences -> Startup Applications in Gnome

但他們都沒有工作。我還能檢查什麼。我的腳本可能有錯誤嗎?我想程序的所有者必須是my_user它才能工作,但我不知道如何調試它。

任何線索表示讚賞。

你可以使用su$$ YourUserName $$-c /usr/bin/vncserver以使用者身份執行 vncserver,而不是以 root 身份執行。

另一點:在您的腳本中,啟動和停止 VNC 伺服器沒有區別。通常,初始化腳本會使用不同的情況來啟動/停止服務:

case "$1" in
   start)
   # code to start the application
   ;;

   stop)
   # code to stop the application
   ;;

   restart)
   $0 stop
   $0 start
   ;;
esac

是一個詳細的範例,如何使用 init 腳本啟動 vnc 伺服器。

好,我知道了。問題是:

  1. 以 root 身份執行我的腳本,這通常會發生,但它不起作用。這就是為什麼有必要使用su [my_user] -c
  2. 需要為選項使用引號,即。

su my_user -c “/usr/bin/vncserver -geometry 1280x1024 -depth 16”

  1. 我還補充說. /lib/lsb/init-functions-exit 0不知道這些是否有必要,但可以肯定它們不會造成任何傷害。只是從tohuwawohu提供的詳細範例中複製了這些內容。

所以我最終得到:

### BEGIN INIT INFO
# Provides:          startVNC
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      
# Short-Description: Start VNC server at boot time
# Description:       A sophisticated script to do the job.
### END INIT INFO

#!/bin/sh
echo "JOB RUN AT $(date)"
echo "============================"
echo ""

. /lib/lsb/init-functions
su my_user -c "/usr/bin/vncserver -geometry 1280x1024 -depth 16"

exit 0

哪個工作得很好。當然,使用上面引用的詳細腳本可能會更好。我通過以下方式將腳本添加到啟動:

sudo update-rc.d -f startVNC start 99 2 3 4 5 .

因為我看不出有任何理由在關機時執行任何東西(除了日誌記錄,我沒有這樣做)。

另請參閱關於 shebang 的評論(以 #! 開頭的行)在我原來的問題下被放錯了位置。不過它可以工作,所以我不想在這裡包含未經測試的程式碼。如果您想使用它,您可能應該更改它。

引用自:https://unix.stackexchange.com/questions/26272