阿里云租了个服务器,在上面跑了一个程序,实时分析屏幕的运行结果。
远程连接的情况下程序都能够正常运行,断开远程连接后,程序就会报错退出。
经过分析,可能的情况是断开连接后,操作系统保持会话,但是会销毁对应的虚拟桌面。我的程序访问不到屏幕就出错了。
有什么手段能够在断开连接后能让操作系统保持桌面
可以尝试使用VNC连接(Virtual Network Computing),它是一种远程控制网络技术,可以允许用户使用远程计算机上的桌面、文件夹及文件,而不需要建立新的连接。VNC连接能够在断开连接后保持会话,而且不会销毁虚拟桌面,因此您的程序也能够正常运行。
centos 系统吗?
那需要后台运行,研究一下 nohup 命令 和 &
尝试使用操作系统的远程终端服务(RDP),这样可以让操作系统保持会话,而不会销毁虚拟桌面。
尝试使用虚拟机,这样可以让操作系统保持会话,而不会销毁虚拟桌面。
尝试使用远程桌面软件,这样可以让操作系统保持会话,而不会销毁虚拟桌面。
尝试使用脚本自动重新启动程序,当断开连接时,脚本可以自动重新启动程序,从而保持程序运行。
补充一下,服务器端操作系统是Windows Server2012 R2
整了两天,其实大部分答案之前都尝试过,最后阿里云的工程师给出一个折中的方案,用阿里自己的一个网页vnc工具,能够实现关闭页面后,保持桌面存在。
我这里应用比较特殊,服务器用来挂机,但是没法一直保持远程桌面连接。服务器端程序需要检测界面状态,推测可能是windows机制,断开连接后系统就把桌面销毁了。我这里本地测试,服务器有一个物理桌面的话就不会出现这种情况。
多谢大家帮忙出主意,感谢。
您可以通过设置Windows Server2012 R2的系统设置来解决这个问题。
您可以执行以下操作:
1.进入服务器的控制面板,找到管理工具。
2.在管理工具中打开远程桌面服务(Remote Desktop Services)。
3.在远程桌面服务管理器中,选择终端服务设置。
4.在终端服务设置中,找到会话设置,并在这里启用"持久会话"。
5.这样设置后,断开远程连接后,Windows Server2012 R2将保持桌面,您的程序将不再因无法访问屏幕而报错退出。
你不选择注销就没事,直接把远程桌面 x 就可以了
利用远程任务计划程序(Task Scheduler)
您可以在服务器端创建一个远程任务计划程序,以定期运行您的程序,这样即使在断开连接后操作系统销毁虚拟桌面,也可以继续运行您的程序。
运行您的程序在服务器的控制台(console)模式下
您可以在控制台模式下运行您的程序,在控制台模式下运行的程序不依赖于虚拟桌面的存在,并且会在断开连接后继续运行。
您可以尝试以下解决方案来解决此问题:
请根据您的需求和环境选择合适的方案,以便解决此问题
思路:
1、只缩小最小化窗口
2、换个远程工具,让它远程连接断开后不会自动注销会话
3、设置远程桌面服务,链接:https://eyeofeagle.blog.csdn.net/article/details/86660355?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-86660355-blog-119267962.pc_relevant_multi_platform_whitelistv4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-86660355-blog-119267962.pc_relevant_multi_platform_whitelistv4&utm_relevant_index=8
你可以使用一些服务器端的工具来保持桌面会话,以便即使断开远程连接,操作系统也可以继续保持桌面。
其中一种方法是使用 screen 或 tmux 这样的终端复制工具。这些工具可以在断开远程连接后仍然保持活动的会话。你可以将程序作为 screen 或 tmux 的子进程运行,这样即使断开连接,程序仍然可以正常运行。
另一种方法是使用 nohup 命令来运行程序。 nohup 命令可以保证即使断开远程连接,程序也不会被终止。
如果你希望保持对图形用户界面的访问,可以使用 X11 和 ssh 的 X11 转发功能。该功能可以在远程连接期间从服务器端转发 X11 会话,从而允许你从远程主机访问服务器端的图形用户界面。
请注意,这只是一些可能的解决方案,实际情况可能因具体环境而异。请根据你的特定需求和环境来决定使用哪种方法。
云服务器就是用来挂机的,怎么可能程序会关闭。你换个远程连接工具试试
看下如何不休眠吧,还有你的虚拟机是一直在用的吗,按理说不会被回收才对啊