在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
新聞熱點
疑難解答