在启动时我有
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 将无法重新启动服务。