如何阻止 x11vnc 在注销时关闭?

如何阻止 x11vnc 在注销时关闭?

在启动时我有

sudo x11vnc -xkb -noxrecord -forever -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

通过 init.d 运行

当我使用 VNC 客户端时,它可以工作并显示登录提示,但是如果我注销,VNC 服务器将关闭,我必须通过 SSH 登录才能重新启动它,我找到并修改了一个我认为应该可以工作的脚本:

#!/bin/bash

if pgrep "x11vnc"
then
    echo "Running"
else
    echo "Stopped"
    sudo x11vnc -xkb -noxrecord -forever -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw
fi

并且确实如此(如果我运行它,它在 /usr/local/bin/testvnc 中,但是我的 cron 作业:

* * * * * /usr/local/bin/testvnc

它说已经运行 cat var/log/syslog | grep vnc 但是它并没有启动 vnc。

答案1

我在 Kubuntu 16.04.1 上遇到了同样的问题,但您的脚本给了我一个解决方案的想法。

为 systemd 创建服务文件:

sudo nano /etc/systemd/system/x11vnc.service

这是我的x11vnc.service文件:

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target display-manager.service

[Service]
Type=simple
ExecStart=/bin/bash -c '/usr/bin/x11vnc -auth /var/run/sddm/* -noxdamage -norepeat -rfbauth /home/x11vnc/passwd -display :0 -rfbport 5900 -shared -o /var/log/x11vnc.log'
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

设置执行权限:

sudo chmod u+x /etc/systemd/system/x11vnc.service

在 systemd 上重新加载并激活脚本:

sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service

重要的:确保不要在命令中使用-loop-forever选项x11vnc,否则 x11vnc 将无法在注销后终止进程,并且 systemd 将无法重新启动服务。

相关内容