第一次在Windows服务器上通过bat脚本启动jar包,程序运行后没有管他,等到第二天再看的时候,发现控制台日志hung住了,回车后刷刷的打出了一堆日志,而定时任务也未能正常执行。
后来又发现几次,在jar应用启动的过程中,也会出现类似情况,平时都是直接敲回车,这次发现有点不对劲。于是想办法解决,好在很容易找到了解决办法。
先说说原因:
CMD控制台开启了快速编辑模式导致
原理呢?
这是快速编辑模式的功能。当程序不断滚动控制台窗口的内容时,用户无法合理地选择文本。
因此,控制台主机程序只是停止读取stdout/stderr输出,程序将挂起,直到用户完成操作。
这可以更改,您需要关闭启用快速编辑模式选项。
请注意,这个“挂起”与程序以远高于控制台主机可以使用的速率生成stdout输出时得到的执行暂停没有本质区别。尽管这些延误是有限的。
而且这并不是用户停止程序的唯一方法,他也可以简单地按ctrl+s。按ctrl+q将再次恢复程序。
知道了原因和原理,那解决这个问题就相对明确了。有两种方式解决这个问题。
方法一:手动操作关闭控制台的“快速编辑模式”
1.在启动程序的cmd窗口鼠标右键,选择属性
2.点击属性打开窗口后,会出现快速编辑模式,取消勾选
3.点击确认即可
方法二:在bat脚本文件中操作注册表关闭“快速编辑模式”。bat脚本中命令如下:
@echo off
reg add HKEY_CURRENT_USER\Console /v QuickEdit /t REG_DWORD /d 00000000 /f
可以将这段指令放在你的bat启动脚本中。