整站關(guān)鍵詞排名優(yōu)化員工培訓(xùn)
前言
由于使用windows自動(dòng)的自啟方法,不管是將程序啟動(dòng)服務(wù)放到開機(jī)自啟文件夾中,還是創(chuàng)建任務(wù)計(jì)劃程序,都沒有很好的實(shí)現(xiàn)程序的開機(jī)自啟效果,而WinSW很好的解決了這個(gè)問題。
下載
WinSW下載地址
注意:不同版本,有些配置是不一樣的,比如我用的這個(gè)版本log mode就棄用了rotate模式,推薦使用roll模式。
這里我用的版本是: v2.12.0。
配置介紹
配置的話其實(shí)在下載的那兩個(gè)xml文件中就有介紹到,翻譯著看也能懂的,這里再介紹一下比較常用的。
sample-allOptions.xml
包含此版本的全部配置說(shuō)明,文檔不長(zhǎng),介紹的也很詳細(xì)。
sample-minimal.xml
給出一個(gè)最簡(jiǎn)單的示例配置,臨時(shí)用用就夠了。
<service><id>Minio-Server</id><name>Minio-Server</name><description>這個(gè)服務(wù)的描述</description><env name="HOME" value="%BASE%"/><env name="MY_TOOL_HOME" value="C:\etc\tools\myTool" /><env name="LM_LICENSE_FILE" value="host1;host2" /><depend>service_id1</depend><depend>service_id2</depend><startmode>Automatic</startmode><delayedAutoStart/><!-- 要執(zhí)行的可執(zhí)行文件 --><executable>%BASE%\xxx.exe</executable><!-- 可執(zhí)行文件傳遞的參數(shù) --><arguments>server "%BASE%\data"</arguments><stopexecutable>%BASE%\xxx.exe -s stop</stopexecutable><stoparguments>server "%BASE%\data"</stoparguments><!-- <logmode>rotate</logmode> --><logpath>%BASE%\logs</logpath><log mode="roll-by-size-time"><sizeThreshold>10240</sizeThreshold><pattern>yyyyMMdd</pattern><autoRollAtTime>00:00:00</autoRollAtTime><zipOlderThanNumDays>5</zipOlderThanNumDays><zipDateFormat>yyyyMMdd</zipDateFormat></log>
</service>
roll模式的默認(rèn)配置:
<!--工作方式類似于追加模式,
但除此之外,如果日志文件的大小超過了設(shè)定的大小,
它將滾轉(zhuǎn)到myapp.1.out.log、myapp.2.out.log等等。
嵌套的<sizeThreshold>元素指定以KB為單位的旋轉(zhuǎn)閾值(默認(rèn)為10MB),
嵌套的<keepFiles>元素指定要保留的滾動(dòng)文件的數(shù)量(默認(rèn)為8)。-->
<log mode="roll-by-size"><sizeThreshold>10240</sizeThreshold><keepFiles>8</keepFiles>
</log>
roll-by-time配置:按日志文件時(shí)間段滾動(dòng)
<!--必須嵌套pattern標(biāo)簽指定日志文件名的時(shí)間標(biāo)記格式,例如yyyyMMdd HH:mm-->
<log mode="roll-by-time"><pattern>yyyyMMdd</pattern>
</log>
roll-by-size-time配置:按日志文件大小和時(shí)間模式滾動(dòng)
<!--嵌套sizeThreshold標(biāo)簽指定日志文件多大時(shí)生成新日志文件,單位為KB
嵌套pattern標(biāo)簽指定當(dāng)日志文件文件名最后的區(qū)分字段格式(時(shí)間格式,如yyyyMMdd HH:mm)
嵌套autoRollAtTime標(biāo)簽指定每天在指定時(shí)間進(jìn)行日志滾,例如00:00:00表示每天凌晨進(jìn)行日志滾動(dòng)-->
<log mode="roll-by-size-time"><sizeThreshold>10240</sizeThreshold><pattern>yyyyMMdd</pattern><autoRollAtTime>00:00:00</autoRollAtTime>
</log>
具體參考官方文檔:log配置項(xiàng)說(shuō)明及示例
可能有些配置文檔中和官方給的下載xml中不一樣,比如這個(gè)log?mode參數(shù),官方給的xml就沒提到過roll-by-size-time這個(gè)配置,但是文檔中有,其實(shí)也可以用。
示例
jar包啟動(dòng)示例
<service> <!-- 服務(wù)唯一ID --><id>imApiId</id><!-- 服務(wù)名稱--><name>imApiService</name><!-- 服務(wù)描述--><description>this is im api,author:chaodev</description><executable>java</executable> <arguments>-jar imApi.jar</arguments><!-- 開機(jī)啟動(dòng) --><startmode>Automatic</startmode><!-- 日志配置 --><logpath>%BASE%\logs</logpath><logmode>roll</logmode></service>
注意:
id:唯一標(biāo)識(shí),我設(shè)為jar包的名稱
name:服務(wù)中展示的名字
description:服務(wù)描述
executable:java 或 jdk路徑
arguments:執(zhí)行的命令和jar包路徑,我這因?yàn)閖ar包和xml在一個(gè)目錄,可以直接寫jar包名,路徑?jīng)]給出也可以,給路徑時(shí),需要加雙引號(hào),ru:"d:/ff/xxx.jar"。
啟動(dòng)注冊(cè)服務(wù):在xxx.exe當(dāng)前目錄中進(jìn)入cmd ,執(zhí)行xxxexe install,服務(wù)中就注冊(cè)成功了
擴(kuò)展:補(bǔ)償兩個(gè)手動(dòng)啟動(dòng)的bat腳本:
1. 后臺(tái)啟動(dòng)
#
@echo off
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
java -jar C:\Users\Administrator\Desktop\aa\jnpf-admin-3.4.5-RELEASE.jar > imApiLog.log 2>&1 &
exit
后臺(tái)啟動(dòng),啟動(dòng)日志及后續(xù)訪問日志(相當(dāng)于控制臺(tái)輸出日志),顯示在腳本中設(shè)置的imApiLog.log中;
關(guān)閉服務(wù):
netstat -ano|findstr 8088 # 根據(jù)端口號(hào)查進(jìn)程
taskkill /f /pid 13968 # 根據(jù)進(jìn)程id殺進(jìn)程(/f:強(qiáng)制結(jié)束該進(jìn)程以及所有子進(jìn)程)
2. dos窗口啟動(dòng)
@echo off & setlocal EnableDelayedExpansiontitle xxxx服務(wù)for %%a in (8080) do (set pid=0for /f "tokens=2,5" %%b in ('netstat -ano ^| findstr ":%%a"') do (set temp=%%bfor /f "usebackq delims=: tokens=1,2" %%i in (`set temp`) do (if %%j==%%a (taskkill /f /pid %%cset pid=%%cecho 端口號(hào)【%%a】相關(guān)進(jìn)程已殺死) else (echo 不是本機(jī)占用端口【%%a】)))if !pid!==0 (echo 端口號(hào)【%%a】沒有占用)java -Xms1024m -Xmx1024m -Dfile.encoding=utf-8 -jar xxx.jar
)echo 操作完成
pause
安裝服務(wù)
將前邊準(zhǔn)備好的xml文件及下載的WinSW程序拷貝到需要配置開機(jī)自啟的程序文件夾,根據(jù)需求重命名這兩個(gè)文件,注意保持兩個(gè)文件名一致
。
注意:
id:唯一標(biāo)識(shí),我設(shè)為jar包的名稱
name:服務(wù)中展示的名字
description:服務(wù)描述
executable:java 或 jdk路徑
arguments:執(zhí)行的命令和jar包路徑,我這因?yàn)閖ar包和xml在一個(gè)目錄,可以直接寫jar包名,路徑?jīng)]給出也可以,給路徑時(shí),需要加雙引號(hào),ru:"d:/ff/xxx.jar"。
啟動(dòng)注冊(cè)服務(wù):在imNginxService.exe當(dāng)前目錄中進(jìn)入cmd ,輸入?imNginxService.exe?install 回車,服務(wù)中就注冊(cè)成功了?
執(zhí)行指令
執(zhí)行命令:安裝服務(wù):
WinSW-x64.exe install卸載服務(wù):
WinSW-x64.exe uninstall啟動(dòng)服務(wù):
WinSW-x64.exe start停止服務(wù):
WinSW-x64.exe stop重啟服務(wù):
WinSW-x64.exe restart檢查服務(wù)狀態(tài):
WinSW-x64.exe status刷新服務(wù)屬性而不是重新安裝:
WinSW-x64.exe refresh
參考鏈接:https://blog.csdn.net/zwjzone/article/details/132362965