经常因为独享主机的用户因为服务器windows更新软件等原因,更新后需要重启服务器,在点了服务器重启后3389断开了,但是服务器没有重启,远程也无法连接上,没办法这种时候通知机房强制断电重启服务器才能恢复,这种情况原因是什么呢?
实际上windows 2003 server的远程桌面功能是非常强大的,他可以方便我们进行各种操作,修改设置,操作服务器就像在本机一样。当然对于关闭计算机,重新启动计算机,注销等系统操作也是没有一点问题的。根据这位情况的提示我们可以知道在进行完远程重新启动的操作后自己的会话是中断的,也就是说服务器已经开始进入重启操作准备阶段,但是为什么之后的重新启动操作却失败了呢?原因只有一个--那就是某个程序或进程阻止了重启操作的继续运行,也就是说系统运行了一些不能被自动关闭的程序而导致重启无法顺利完成。 那么如何解决这个问题呢?我们可以联想到平时操作电脑时遇到的症状,很多时候我们在重新启动计算机或者关闭计算机时都会出现一个"某某程序无法关闭,请按强制关闭按钮或者等待一段时间后再次尝试关闭操作的提示",不同的是在本机操作时可以直接点"强制关闭"按钮来完成重新启动操作,在服务器上由于远程桌面程序会先于这些难关闭的进程结束,所以我们就无法点"强制关闭"按钮进行操作了。知道了问题的根源我们就可以从两方面入手进行解决了。
(1)找出捣乱进程: 首先我们应该在服务器机房而不是远程连接服务器进行操作,然后在服务器的控制台上执行重新启动的操作,看看是否有提示信息出现,如果有则根据提示将对应的程序删除,只有删除捣乱的程序后才能保证远程重新启动服务器顺利完成。
(2)强制终止进程: 然而有的时候我们会发现无法关闭的程序或者进程是服务器的关键进程或者是运行中不可缺少的,那么这时就不能够用前面的方法将进程对应的程序删除了,取而代之的是通过强制关闭命令来完成。 在windows 2003 server中有一个叫做shutdown.exe的文件,他主要负责重新启动计算机,注销计算机,关闭计算机的工作,通过他可以完成上述操作。而令人欣喜的是该命令提供了一些参数,通过这些参数可以强制关闭阻碍重启计算机的进程。 第一步:通过windows 2003 server的"开始- 运行- 输入CMD"进入命令行模式。 第二步:在命令行模式中输入shutdown后回车。 第三步:默认不加参数是无法实现任何操作的,下面简单介绍下shutdown命令的常用参数。 /?--显示帮助信息 /l--注销 /s--关闭计算机 /r--关闭并重启动计算机 /a--取消放弃系统关闭的操作。 /h--休眠本地计算机。 /t xxx--设置关闭前的超时为xxx秒,不加xxx默认为30秒。 /f--强制正在运行的应用程序关闭而不事先警告用户,这个就是我们本篇文章的关键了。 第四步:执行"shutdown -r -f -t 1"(不含引号)命令完成我们的强制重新启动计算机操作,遇到不能自动关闭的进程或程序将强制关闭。该命令中的-r参数是重新启动,-f是强制关闭进程和程序,"-t 1"是设置关闭倒记时为1秒。 第五步:这样以后我们通过远程桌面连接上服务器后就可以通过shutdown -r -f -t 1让其重新启动了,即使遇到无法关闭的进程也会强制关闭。 小提示: 另外有的时候遇到一些无法关闭的进程是需要等待一段时间由系统自己再次尝试关闭的,不过默认等待时间比较长,实际上我们可以大大缩短这个时间,方法是通过"开始- 运行- 输入regedit后回车"打开注册表,展开HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control,其下有一个数值WaitToKillServiceTimeout,将它的数值数据由"20000"修改为"0"。通过这样的修改,以后我们等待关闭的时间就可以大大减少了,不过此方法对于那些难关闭而需要强制关闭的进程无效。
|