如何在 Ubuntu 10.04 中启动 VNC 服务器

如何在 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

当我在 vncserver 启动时通过 ssh 登录并执行它时my_user,我可以从桌面看到 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. 将我的脚本添加到 Gnome 中的系统 -> 首选项 -> 启动应用程序

但它们都不起作用。我还能检查什么。我的脚本可能有错误吗?我想进程的所有者必须是my_user它才能工作,但我不知道如何调试它。

任何线索表示赞赏。

答案1

你可以使用su[您的用户名]-c /usr/bin/vncserver以用户身份而不是 root 身份运行 vncserver。

另一点:在您的脚本中,启动和停止 VNC 服务器没有区别。通常,初始化脚本会使用不同的情况来启动/停止服务:

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

    stop)
    # code to stop the application
    ;;

    restart)
    $0 stop
    $0 start
    ;;
esac

这里这是一个如何使用 init 脚本启动 vnc 服务器的详细示例。

答案2

好,我知道了。问题是:

  1. 通常会发生的以 root 身份运行我的脚本是行不通的。这就是为什么有必要使用su [my_user] -c
  2. 选项需要使用引号,即。

    su my_user -c “/usr/bin/vncserver -几何 1280x1024 -深度 16”

  3. 我还添加了. /lib/lsb/init-functions-exit 0不知道这些是否有必要,但可以肯定它们不会造成任何伤害。只是从提供的详细示例中复制了这些内容托胡瓦沃胡

所以我最终得到:

### 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(以 # 开头的行!)在我原来的问题下被放错位置的评论。但它确实有效,所以我不想在这里包含未经测试的代码。如果您想使用它,您可能应该更改它。

相关内容