我有一个想要运行的应用程序,但我希望它只能通过某个 VNC 端口可见。
我不想让应用程序显示在普通的 Ubuntu 桌面上。我希望应用程序“在后台”运行,并且只能通过 VNC 查看。当连接到这个“备用 X 服务器”时,最终用户不会看到任何菜单栏、窗口装饰......只有应用程序。
仔细想想,我要求的是一种仅针对特定应用程序的信息亭模式,可通过 VNC 访问。
这可能吗或者我真的到达这里了吗?
谢谢!
请注意,我希望以这种方式运行的应用程序是用 Java 编写的。它是一个 JNLP 文件。
答案1
我已经成功完成了这个任务。下面是具体方法。
安装必要的软件。
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer xvfb x11vnc vnc-java blackbox xterm
为 VNC 连接设置密码。
x11vnc -storepasswd
创建一个脚本文件来用 cron 运行。
sudo nano /sflowtrend.sh
这些是文件的内容。
#!/bin/bash
log="/sflowtrend.log"
echo "Closing existing sFlowTrend windows gracefully." > $log
DISPLAY=:1 wmctrl -c "sFlowTrend"
sleep 5
echo "Killing all existing instances of java, Xvfb, and x11vnc." >> $log
for i in {1..3} ; do
killall -q java
killall -q x11vnc
killall -q Xvfb
echo "Iteration $i of kill cycle complete." >> $log
sleep 2
done
echo >> $log
Xvfb :1 -screen 0 1200x800x24+32 -ac &
echo "Fake X launched." >> $log
x11vnc -display :1 --nocursor --httpdir /usr/share/vnc-java --httpport 6789 --usepw --forever --quiet --shared &
echo "VNC launched." >> $log
DISPLAY=:1 blackbox &
echo "BlackBok launched." >> $log
DISPLAY=:1 javaws /home/administrator/Downloads/sFlowTrend.jnlp &
echo "sFlowTrend (Java) launched." >> $log
echo >> $log
echo "Sleeping for one minute." >> $log
sleep 10
echo "Sleeping for fifty seconds." >> $log
sleep 10
echo "Sleeping for forty seconds." >> $log
sleep 10
echo "Sleeping for thirty seconds." >> $log
sleep 10
echo "Sleeping for twenty seconds." >> $log
sleep 10
echo "Sleeping for ten seconds." >> $log
sleep 10
echo >> $log
DISPLAY=:1 wmctrl -r "sFlowTrend" -b add,fullscreen
echo "sFlowTend now running in fullscreen." >> $log
echo >> $log
echo "Have fun!" >> $log
编辑 root 的 crontab。
sudo crontab -e
将以下行添加到末尾crontab
。
@reboot bash /sflowtrend.sh
重新启动,然后尝试连接到您的服务器、端口6789
http://ubuntu-hostname:6789
这对我很有用,我想分享。
玩得开心!
来源