WinSN
- WinSW 是一个可执行的二进制文件,可用于将自定义进程包装并作为 Windows 服务进行管理。
- WinSW 由配置文件管理:
-
<service> <id>jenkins</id> <name>Jenkins</name> <description>This service runs Jenkins continuous integration system.</description> <env name="JENKINS_HOME" value="%BASE%"/> <executable>java</executable> <arguments>-Xrs -Xmx256m -jar "%BASE%\jenkins.war" --httpPort=8080</arguments> <log mode="roll"></log> </service>
-
- 重命名WinSW.exe二进制文件也接受以下命令:
- install将服务安装到 Windows Service Controller。 此命令需要安装指南中描述的一些初步步骤。
- uninstall卸载服务。与上述操作相反。
- start以启动服务。该服务必须已安装。
- stop停止服务。
- stopwait停止服务并等待它实际停止。
- restart重新启动服务。如果服务当前未运行,则此命令的作用类似于 。start
- status以检查服务的当前状态。
脚本收藏
将需要注册为服务的jar包放在相同名字的目录下, 也可以修改获取文件夹名的脚本为获取jar包名, 但是这个目录下可能会存在多个版本的jar包, 所以我就取了文件夹的名字, 文件夹名字就是最终要运行jar包的名字
dir.bat (获取脚本所在文件夹目录名)
@echo off
for %%I in (.) do set "projectName=%%~nxI"
echo %projectName%
install.bat (注册服务脚本)
@echo off
rem 获取当前目录名字,通过dir.bat脚本
for /f "delims=" %%i in ('dir.bat') do set projectName=%%i
rem 创建临时文件,xml配置文件
(
echo ^<service^>
echo ^<id^>%projectName%^</id^>
echo ^<name^>%projectName%^</name^>
echo ^<description^>This service is %projectName%^</description^>
echo ^<executable^>java^</executable^>
echo ^<arguments^>-Dfile.encoding=UTF8 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=1024m -Xms256m -Xmx256m -Xmn64m -Xss256k -jar %projectName%.jar^</arguments^>
rem 日志路径 当前目录下的logs文件夹中
echo ^<logpath^>%%BASE%%^\logs^</logpath^>
rem 日志模式,滚动模式,最大10MB,最多8个文件的模式
echo ^<logmode^>rotate^</logmode^>
rem echo ^<log mode="rotate"^>
rem echo ^<pattern^>%projectName%^</pattern^>
rem echo ^</log^>
echo ^</service^>
) > temp.txt
rem 重定向到目标文件
type temp.txt > %projectName%.xml
rem 删除临时文件
del temp.txt
rem 复制下载好的winSW文件 jar包名
copy operation.exe %projectName%.exe
rem 注册服务
%projectName%.exe install
rem 创建临时文件
(
echo tail -n 200 -f %projectName%.out.log
) > temp.txt
rem 重定向到日志查看脚本
type temp.txt > %projectName%.sh
rem 删除临时文件
del temp.txt
rem 移动日志脚本到日志目录
move %projectName%.sh logs\
start.bat (项目启动)
@echo off
for /f "delims=" %%i in ('dir.bat') do set projectName=%%i
%projectName%.exe start
stop.bat (项目停止)
@echo off
for /f "delims=" %%i in ('dir.bat') do set projectName=%%i
%projectName%.exe stop
uninstall.bat (服务卸载)
@echo off
for /f "delims=" %%i in ('dir.bat') do set projectName=%%i
rem 停止服务
%projectName%.exe stop
rem 卸载服务
%projectName%.exe uninstall
rem 清理文件
move %projectName%.xml logs
del %projectName%.exe
set CURRENT_DATE=%DATE%
set CURRENT_TIME=%TIME%
set DATE_TIME=%CURRENT_DATE:~3,4%%CURRENT_DATE:~8,2%%CURRENT_DATE:~11,2%%CURRENT_TIME:~0,2%%CURRENT_TIME:~3,2%%CURRENT_TIME:~6,2%
set DATE_TIME=%DATE_TIME: =0%
rename logs %DATE_TIME%
使用
- 需要注册的jar包为 blade-crm.jar 所在的目录就为 blade-crm
- 我将winSW.exe 文件重命名为了 operation.exe
- 将5个脚本复制到 blade-crm目录下
- install.bat
- 创建配置文件 blade-crm.xml
- 注册服务
- 创建log.sh文件到logs目录下
- uninstall.bat
- 停止服务
- 卸载服务
- 清理文件, 整理日志