发信人: 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.
 ----------------------------------------------------------------------------      | 
 
 
 |