问题描述
我已经为此苦苦挣扎了很长时间,无法再问另一个启动脚本问题。
我有一个相对简单的启动脚本,即:
### 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上运行:
-
将我的脚本复制到
/etc/init.d/
,调用update-rc.d -f startVNC defaults
(在defaults
之后还要使用99
来确保vncserver
所依赖的所有内容都已在运行)。我检查了所有生成的符号链接是否在/etc/rcX.d/
文件夹中。但它在重新启动或start-up上不起作用 -
在
exit 0
之前将我的脚本添加到/etc/rc.local
-
作为
@reboot /home/my_user/scripts/startVNC
添加到crontab -e
-
将我的脚本添加到
/etc/init.d/rcS
-
将我的脚本添加到系统->首选项-> 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服务器的详细示例。
次佳答案
好,我知道了。问题是:
-
以root身份运行我的脚本通常不会发生。这就是为什么必须使用
su [my_user] -c
-
一个选项需要使用引号,即。 su my_user -c“ /usr /bin /vncserver -geometry 1280×1024 -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
哪个很好。当然,使用上面引用的elaborate script可能会更好。我通过以下方式将脚本添加到start-up:
sudo update-rc.d -f startVNC start 99 2 3 4 5 .
因为我看不到任何理由在关机时运行任何东西(除了日志记录,我没有这样做)。
另请参阅有关shebang(以#!开头的行)在我原来的问题下放错位置的注释。但是它可以工作,所以我不想在这里包括未经测试的代码。如果您想使用它,应该更改它。