精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>热门游戏>>CS反恐精英>>.:: 反恐经验杂谈 ::.>>让windows 2000下的HL Server在后台运行,并自动保持启动

主题:让windows 2000下的HL Server在后台运行,并自动保持启动
发信人: bsdbase(阿土)
整理人: zuanlong911(2003-01-01 17:29:44), 站内信件
好久没来,贡献点经验给各位op:

             让windows 2000下的HL Server在后台运行,并自动保持启动
             
    由于HL Server设计为启动后显示控制台,所以,如果按常规使用类似
F:\HLServer\hlds.exe -game cstrike -port 27016 -console +maxplayers 32 -nomaster +sv_lan 1 +map de_dust2
这样的命令行启动hl server,将会出现控制台,这样的一个问题是,很多服务器平常都不会登录进入系统,自然hl server
就没法启动了,而且如果登录后启动hl server,又不能注销,给服务器管理带来麻烦;另外的问题是,不知道是由于
windows 2000的原因还是HL Server的原因,hl server常常会自动关闭,而hl server本身并没有一个自动重新启动的机制。
    为了解决这两个问题,我设计了一下的方法:
    
一)使HL SERVER 以windows 2000 服务方式运行;
windows 2000服务设置为自动启动时,开机即自动在后台运行,无需登录,也不出现界面。hl server没有服务方式运行的方法
我使用了一个简单的包装程序AppToService,可以从http://www.basta.com下载或http://www.bsdbase.com/download/tools/as.exe
下载该程序,并将as.exe复制到windows的系统目录\winnt\system32\

假设我的HL Server主目录在f:\hlserver,原来的启动命令行是:
F:\HLServer\hlds.exe -game cstrike -port 27016 -console +maxplayers 32 -nomaster +sv_lan 1 +map de_dust2
首先,安装该程序为系统服务:   
as /Install F:\HLServer\hlds.exe /AbsName:"8341" /Arguments:" -game cstrike -port 27016 -console +maxplayers 32 -nomaster +sv_lan 1 +map de_dust2" /Directory:"f:\hlserver"
大家可以自己对比命令行和安装命令,并参考as的帮助理解上述命令;这样HL Server就安装为系统服务8341,进入windows 2000的服务管理
把该服务设置为自动启动、不与桌面交互;

二)安装监控程序,监控HL Server服务;
    如果上述HL Server服务8341停止,自动启动它。先下载工具http://www.bsdbase.com/download/tools/sleep.exe
把该文件保存到windows的系统目录\winnt\system32\

创建一个监控批处理如下:F:\HLServer\8341.cmd
@echo off
echo "Starting HL Server 8341 ......"
net start 8341
sleep 30000

:loop
echo "Loop Started HL Server 8341 ......"
echo "CTL+C to break
net start 8341
sleep 30000
goto loop

安装该程序F:\HLServer\8341.cmd为系统服务:   
as /Install F:\HLServer\8341.cmd /AbsName:"8341mon" /Directory:"f:\hlserver"
大家可以自己对比命令行和安装命令,并参考as的帮助理解上述命令;这样F:\HLServer\8341.cmd就安装为系统服务8341mon,
进入windows 2000的服务管理把该服务设置为自动启动、不与桌面交互;

手工管理:

启动8341mon服务,8341 hl server自动启动;

关闭8341mon,再关闭8341,8341 hl server自动关闭。


附:

批处理解释

@echo off
echo "Starting HL Server 8341 ......"
ram 8341 是上面安装hl server服务时起的名字
net start 8341
ram sleep后面的参数是毫秒,30000就是30秒
sleep 30000

ram 循环检查开始
:loop
echo "Loop Started HL Server 8341 ......"
echo "CTL+C to break
net start 8341
sleep 30000
goto loop


----
http://www.bsdbase.com
Trust me, I know what I am doing !
----------------------------------
Give me a Fish I Eat For a day ;teach me to fish,I`ll eat for a life time.
----------------------------------------------------------------------------     

[关闭][返回]