Upstart 生成多个 vncserver

Upstart 生成多个 vncserver

简单的 upstart 脚本:

开机启动

执行 /usr/bin/vncserver

产生超过 15 个 Xvnc 进程实例。

软件:Ubuntu 16.04 上的 tigervncserver

如果我从 $/usr/bin/vncserver 之类的 shell 启动它,它可以正常工作并且只启动一个服务器。

每次 vncserver 从任何地方启动时,dmesg 都会显示消息:

[ 1694.544180] show_signal_msg: 42 callbacks suppressed

[ 1694.544183] gnome-screensav[3732]: segfault at 0 ip           (null) sp 00007ffd6f4700d8 error 14 in gnome-screensaver[400000+20000]

但之后就正常工作了。

当 upstart 执行此脚本时,我可以在 dmesg 中看到 13 条有关屏幕保护程序的消息和消息:

[ 2040.250475] traps: gnome-session-b[12217] trap int3 ip:7fdbc39eba6b sp:7fff55f95e20 error:0

我猜是有些溢出...然后它会停止生成服务器。

那么,如何防止 upstart 重新启动脚本,即使它导致系统错误?如何在登录后自动启动 vncserver,而不是 upstart(或 systemd)或 Ubuntu 的启动应用程序,以确保它只执行一次?如何修复该错误(如果有人知道的话)?

答案1

主要问题的答案:

这个简单的脚本在会话启动时运行,然后启动 vnc 服务器,该服务器启动新会话,在此会话中,upstart 再次启动此脚本。许多 Xvnc 实例被递归调用。我对脚本做了一些补充:

start on startup

script
if [ -z "$(ps -e | grep Xvnc)" ]; then
    /usr/bin/vncserver
fi
end script

现在它运行正常并且仅启动一个会话。

段错误仍然存​​在,但主要问题已解决。

相关内容