Ubuntu
如何在 Ubuntu 10.04 中啟動 VNC 伺服器
我已經為此苦苦掙扎了足夠長的時間來提出另一個啟動腳本問題。
我有一個相對簡單的啟動腳本,即:
### 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_user
vncserver 啟動時通過 ssh 登錄並執行它時,我可以從我的桌面看到 GUI。所以我嘗試了 5 件事讓它在啟動時執行:
- 將我的腳本複製到
/etc/init.d/
,呼叫update-rc.d -f startVNC defaults
(也使用99
afterdefaults
以確保vncserver
所依賴的所有內容都已執行)。我檢查了/etc/rcX.d/
文件夾中所有生成的符號連結。但它在重新啟動或啟動時不起作用- 將我的腳本添加到
/etc/rc.local
之前exit 0
- 添加
crontab -e
為@reboot /home/my_user/scripts/startVNC
- 將我的腳本添加到
/etc/init.d/rcS
- 將我的腳本添加到 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 伺服器。
好,我知道了。問題是:
- 以 root 身份執行我的腳本,這通常會發生,但它不起作用。這就是為什麼有必要使用
su [my_user] -c
- 需要為選項使用引號,即。
su my_user -c “/usr/bin/vncserver -geometry 1280x1024 -depth 16”
- 我還補充說
. /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 的評論(以 #! 開頭的行)在我原來的問題下被放錯了位置。不過它可以工作,所以我不想在這裡包含未經測試的程式碼。如果您想使用它,您可能應該更改它。