当前位置: 首页>>技术教程>>正文


如何在Ubuntu 10.04中的start-up上启动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种方法使其在start-up上运行:

  1. 将我的脚本复制到/etc/init.d/,调用update-rc.d -f startVNC defaults(在defaults之后还要使用99来确保vncserver所依赖的所有内容都已在运行)。我检查了所有生成的符号链接是否在/etc/rcX.d/文件夹中。但它在重新启动或start-up上不起作用

  2. exit 0之前将我的脚本添加到/etc/rc.local

  3. 作为@reboot /home/my_user/scripts/startVNC添加到crontab -e

  4. 将我的脚本添加到/etc/init.d/rcS

  5. 将我的脚本添加到系统->首选项-> Gnome中的启动应用程序

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

任何线索表示赞赏。

最佳答案

您可以使用su [YourUserName] -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

Here是如何使用初始化脚本启动vnc服务器的详细示例。

次佳答案

好,我知道了。问题是:

  1. 以root身份运行我的脚本通常不会发生。这就是为什么必须使用su [my_user] -c

  2. 一个选项需要使用引号,即。 su my_user -c“ /usr /bin /vncserver -geometry 1280×1024 -depth 16”

  3. 我还添加了. /lib/lsb/init-functionsexit 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

哪个很好。当然,使用上面引用的elaborate script可能会更好。我通过以下方式将脚本添加到start-up:

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

因为我看不到任何理由在关机时运行任何东西(除了日志记录,我没有这样做)。

另请参阅有关shebang(以#!开头的行)在我原来的问题下放错位置的注释。但是它可以工作,所以我不想在这里包括未经测试的代码。如果您想使用它,应该更改它。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10896.html,未经允许,请勿转载。