在Windows平台上运行后台进程需要运行Windows服务。而要运行Windows服务,你就必须有能够感知Windows服务的程序。Bash脚本无法感知Windows服务,许多控制台程序同样也不能。而且,将这些程序转变为Windows服务也不可行。
没有附加的程序,想把控制台程序作为服务来运行是非常复杂的。Microsoft在其Resource Toolkit产品中提供了一个程序,可以将控制台程序转变为Windows服务。但遗憾的是,Resource Toolkit并不是免费的午餐。
但是,开源程序XYNTService却为我们提供了一个免费的方案,借助该程序,治理员可以定义执行控制台程序和及其设置。XYNTService程序是一个Windows服务,它通过读取设置文件来获悉执行哪些程序。
本文摘自最新出版的“Open Source For Windows Administrators”一书。在Code PRoject网站可以下载XYNTService程序(用户下载源代码和程序时需要进行注册)。
下载的压缩包内包含一个名为XYNTService.exe的可执行文件。将此文件复制到预备作为XYNTService程序目录的目录内,然后执行XYNTService.exe -i命令即可安装该服务。执行XYNTService.exe –u可移除该服务。
当作为Windows服务安装XYNTService程序时,切记要以特定的用户来运行该服务。因为一些控制台程序可能需要读取用户环境变量或文件,而本地系统帐户不具备这些属性。
在启动XYNTService时,程序会在其所在的目录内查找XYNTService.ini文件。下面是配置文件的一个实例:
[Settings]
ServiceName = XYNTService
ProcCount = 2
CheckProcess = 30
[Process0]
CommandLine =
c:/bin/unison.exe -socket 8118
WorkingDir = c:/
PauseStart = 1000
PauseEnd = 1000
UserInterface = No
Restart = Yes
[Process1]
CommandLine = C:/j2sdk1.4.1
05/bin/java.exe -ms1m -cp . scache
WorkingDir = c:/bin/scache
PauseStart = 1000
PauseEnd = 1000
UserInterface = No
Restart = Yes
#!/bin/bash
pslist grep $procIdentifier
awk '{print $2}' > /tmp/pids.txt
exec 3<&0
exec < /tmp/pids.txt
while read line
do
pskill $line
done
exec <&3
exec 3<&-
rm /tmp/pids.txt
XYNTService.exe -b 2
XYNTService -k Apache
XYNTService -r Apache
新闻热点
疑难解答