jw项目windows环境软件安装
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

291 lines
8.5 KiB

1 year ago
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. setlocal enableextensions
  4. set NOJAVA=nojava
  5. if /i "%1" == "install" set NOJAVA=
  6. call "%~dp0elasticsearch-env.bat" %NOJAVA% || exit /b 1
  7. set EXECUTABLE=%ES_HOME%\bin\elasticsearch-service-x64.exe
  8. if "%SERVICE_ID%" == "" set SERVICE_ID=elasticsearch-service-x64
  9. set ARCH=64-bit
  10. if EXIST "%EXECUTABLE%" goto okExe
  11. echo elasticsearch-service-x64.exe was not found...
  12. exit /B 1
  13. :okExe
  14. set ES_VERSION=7.14.0
  15. if "%SERVICE_LOG_DIR%" == "" set SERVICE_LOG_DIR=%ES_HOME%\logs
  16. if "x%1x" == "xx" goto displayUsage
  17. set SERVICE_CMD=%1
  18. shift
  19. if "x%1x" == "xx" goto checkServiceCmd
  20. set SERVICE_ID=%1
  21. :checkServiceCmd
  22. if "%LOG_OPTS%" == "" set LOG_OPTS=--LogPath "%SERVICE_LOG_DIR%" --LogPrefix "%SERVICE_ID%" --StdError auto --StdOutput auto
  23. if /i %SERVICE_CMD% == install goto doInstall
  24. if /i %SERVICE_CMD% == remove goto doRemove
  25. if /i %SERVICE_CMD% == start goto doStart
  26. if /i %SERVICE_CMD% == stop goto doStop
  27. if /i %SERVICE_CMD% == manager goto doManagment
  28. echo Unknown option "%SERVICE_CMD%"
  29. exit /B 1
  30. :displayUsage
  31. echo.
  32. echo Usage: elasticsearch-service.bat install^|remove^|start^|stop^|manager [SERVICE_ID]
  33. goto:eof
  34. :doStart
  35. "%EXECUTABLE%" //ES//%SERVICE_ID% %LOG_OPTS%
  36. if not errorlevel 1 goto started
  37. echo Failed starting '%SERVICE_ID%' service
  38. exit /B 1
  39. goto:eof
  40. :started
  41. echo The service '%SERVICE_ID%' has been started
  42. goto:eof
  43. :doStop
  44. "%EXECUTABLE%" //SS//%SERVICE_ID% %LOG_OPTS%
  45. if not errorlevel 1 goto stopped
  46. echo Failed stopping '%SERVICE_ID%' service
  47. exit /B 1
  48. goto:eof
  49. :stopped
  50. echo The service '%SERVICE_ID%' has been stopped
  51. goto:eof
  52. :doManagment
  53. set EXECUTABLE_MGR=%ES_HOME%\bin\elasticsearch-service-mgr
  54. "%EXECUTABLE_MGR%" //ES//%SERVICE_ID%
  55. if not errorlevel 1 goto managed
  56. echo Failed starting service manager for '%SERVICE_ID%'
  57. exit /B 1
  58. goto:eof
  59. :managed
  60. echo Successfully started service manager for '%SERVICE_ID%'.
  61. goto:eof
  62. :doRemove
  63. rem Remove the service
  64. "%EXECUTABLE%" //DS//%SERVICE_ID% %LOG_OPTS%
  65. if not errorlevel 1 goto removed
  66. echo Failed removing '%SERVICE_ID%' service
  67. exit /B 1
  68. goto:eof
  69. :removed
  70. echo The service '%SERVICE_ID%' has been removed
  71. goto:eof
  72. :doInstall
  73. echo Installing service : "%SERVICE_ID%"
  74. echo Using ES_JAVA_HOME (%ARCH%): "%ES_JAVA_HOME%"
  75. rem Check JVM server dll first
  76. if exist "%ES_JAVA_HOME%\jre\bin\server\jvm.dll" (
  77. set JVM_DLL=\jre\bin\server\jvm.dll
  78. goto foundJVM
  79. )
  80. rem Check 'server' JRE (JRE installed on Windows Server)
  81. if exist "%ES_JAVA_HOME%\bin\server\jvm.dll" (
  82. set JVM_DLL=\bin\server\jvm.dll
  83. goto foundJVM
  84. ) else (
  85. echo ES_JAVA_HOME ("%ES_JAVA_HOME%"^) points to an invalid Java installation (no jvm.dll found in "%ES_JAVA_HOME%\jre\bin\server" or "%ES_JAVA_HOME%\bin\server"^). Exiting...
  86. goto:eof
  87. )
  88. :foundJVM
  89. if not defined ES_TMPDIR (
  90. for /f "tokens=* usebackq" %%a in (`CALL %JAVA% -cp "!ES_CLASSPATH!" "org.elasticsearch.tools.launchers.TempDirectory"`) do set ES_TMPDIR=%%a
  91. )
  92. rem The JVM options parser produces the final JVM options to start
  93. rem Elasticsearch. It does this by incorporating JVM options in the following
  94. rem way:
  95. rem - first, system JVM options are applied (these are hardcoded options in
  96. rem the parser)
  97. rem - second, JVM options are read from jvm.options and
  98. rem jvm.options.d/*.options
  99. rem - third, JVM options from ES_JAVA_OPTS are applied
  100. rem - fourth, ergonomic JVM options are applied
  101. @setlocal
  102. for /F "usebackq delims=" %%a in (`CALL %JAVA% -cp "!ES_CLASSPATH!" "org.elasticsearch.tools.launchers.JvmOptionsParser" "!ES_PATH_CONF!" "!ES_HOME!"/plugins ^|^| echo jvm_options_parser_failed`) do set ES_JAVA_OPTS=%%a
  103. @endlocal & set "MAYBE_JVM_OPTIONS_PARSER_FAILED=%ES_JAVA_OPTS%" & set ES_JAVA_OPTS=%ES_JAVA_OPTS%
  104. if "%MAYBE_JVM_OPTIONS_PARSER_FAILED%" == "jvm_options_parser_failed" (
  105. exit /b 1
  106. )
  107. rem The output of the JVM options parses is space-delimited. We need to
  108. rem convert to semicolon-delimited and avoid doubled semicolons.
  109. @setlocal
  110. if not "%ES_JAVA_OPTS%" == "" (
  111. set ES_JAVA_OPTS=!ES_JAVA_OPTS: =;!
  112. set ES_JAVA_OPTS=!ES_JAVA_OPTS:;;=;!
  113. )
  114. @endlocal & set ES_JAVA_OPTS=%ES_JAVA_OPTS%
  115. if "%ES_JAVA_OPTS:~-1%"==";" set ES_JAVA_OPTS=%ES_JAVA_OPTS:~0,-1%
  116. echo %ES_JAVA_OPTS%
  117. @setlocal EnableDelayedExpansion
  118. for %%a in ("%ES_JAVA_OPTS:;=","%") do (
  119. set var=%%a
  120. set other_opt=true
  121. if "!var:~1,4!" == "-Xms" (
  122. set XMS=!var:~5,-1!
  123. set other_opt=false
  124. call:convertxm !XMS! JVM_MS
  125. )
  126. if "!var:~1,16!" == "-XX:MinHeapSize=" (
  127. set XMS=!var:~17,-1!
  128. set other_opt=false
  129. call:convertxm !XMS! JVM_MS
  130. )
  131. if "!var:~1,4!" == "-Xmx" (
  132. set XMX=!var:~5,-1!
  133. set other_opt=false
  134. call:convertxm !XMX! JVM_MX
  135. )
  136. if "!var:~1,16!" == "-XX:MaxHeapSize=" (
  137. set XMX=!var:~17,-1!
  138. set other_opt=false
  139. call:convertxm !XMX! JVM_MX
  140. )
  141. if "!var:~1,4!" == "-Xss" (
  142. set XSS=!var:~5,-1!
  143. set other_opt=false
  144. call:convertxk !XSS! JVM_SS
  145. )
  146. if "!var:~1,20!" == "-XX:ThreadStackSize=" (
  147. set XSS=!var:~21,-1!
  148. set other_opt=false
  149. call:convertxk !XSS! JVM_SS
  150. )
  151. if "!other_opt!" == "true" set OTHER_JAVA_OPTS=!OTHER_JAVA_OPTS!;!var!
  152. )
  153. @endlocal & set JVM_MS=%JVM_MS% & set JVM_MX=%JVM_MX% & set JVM_SS=%JVM_SS% & set OTHER_JAVA_OPTS=%OTHER_JAVA_OPTS%
  154. if "%JVM_MS%" == "" (
  155. echo minimum heap size not set; configure using -Xms via "%ES_PATH_CONF%/jvm.options.d", or ES_JAVA_OPTS
  156. goto:eof
  157. )
  158. if "%JVM_MX%" == "" (
  159. echo maximum heap size not set; configure using -Xmx via "%ES_PATH_CONF%/jvm.options.d", or ES_JAVA_OPTS
  160. goto:eof
  161. )
  162. if "%JVM_SS%" == "" (
  163. echo thread stack size not set; configure using -Xss via "%ES_PATH_CONF%/jvm.options.d", or ES_JAVA_OPTS
  164. goto:eof
  165. )
  166. set OTHER_JAVA_OPTS=%OTHER_JAVA_OPTS:"=%
  167. set OTHER_JAVA_OPTS=%OTHER_JAVA_OPTS:~1%
  168. set ES_PARAMS=-Delasticsearch;-Des.path.home="%ES_HOME%";-Des.path.conf="%ES_PATH_CONF%";-Des.distribution.flavor="%ES_DISTRIBUTION_FLAVOR%";-Des.distribution.type="%ES_DISTRIBUTION_TYPE%";-Des.bundled_jdk="%ES_BUNDLED_JDK%"
  169. if "%ES_START_TYPE%" == "" set ES_START_TYPE=manual
  170. if "%ES_STOP_TIMEOUT%" == "" set ES_STOP_TIMEOUT=0
  171. if "%SERVICE_DISPLAY_NAME%" == "" set SERVICE_DISPLAY_NAME=Elasticsearch %ES_VERSION% (%SERVICE_ID%)
  172. if "%SERVICE_DESCRIPTION%" == "" set SERVICE_DESCRIPTION=Elasticsearch %ES_VERSION% Windows Service - https://elastic.co
  173. if not "%SERVICE_USERNAME%" == "" (
  174. if not "%SERVICE_PASSWORD%" == "" (
  175. set SERVICE_PARAMS=%SERVICE_PARAMS% --ServiceUser "%SERVICE_USERNAME%" --ServicePassword "%SERVICE_PASSWORD%"
  176. )
  177. )
  178. "%EXECUTABLE%" //IS//%SERVICE_ID% --Startup %ES_START_TYPE% --StopTimeout %ES_STOP_TIMEOUT% --StartClass org.elasticsearch.bootstrap.Elasticsearch --StartMethod main ++StartParams --quiet --StopClass org.elasticsearch.bootstrap.Elasticsearch --StopMethod close --Classpath "%ES_CLASSPATH%" --JvmMs %JVM_MS% --JvmMx %JVM_MX% --JvmSs %JVM_SS% --JvmOptions %OTHER_JAVA_OPTS% ++JvmOptions %ES_PARAMS% %LOG_OPTS% --PidFile "%SERVICE_ID%.pid" --DisplayName "%SERVICE_DISPLAY_NAME%" --Description "%SERVICE_DESCRIPTION%" --Jvm "%ES_JAVA_HOME%%JVM_DLL%" --StartMode jvm --StopMode jvm --StartPath "%ES_HOME%" %SERVICE_PARAMS% ++Environment HOSTNAME="%%COMPUTERNAME%%"
  179. if not errorlevel 1 goto installed
  180. echo Failed installing '%SERVICE_ID%' service
  181. exit /B 1
  182. goto:eof
  183. :installed
  184. echo The service '%SERVICE_ID%' has been installed.
  185. goto:eof
  186. :err
  187. echo ES_JAVA_HOME environment variable must be set!
  188. pause
  189. goto:eof
  190. rem ---
  191. rem Function for converting Xm[s|x] values into MB which Commons Daemon accepts
  192. rem ---
  193. :convertxm
  194. set value=%~1
  195. rem extract last char (unit)
  196. set unit=%value:~-1%
  197. rem assume the unit is specified
  198. set conv=%value:~0,-1%
  199. if "%unit%" == "k" goto kilo
  200. if "%unit%" == "K" goto kilo
  201. if "%unit%" == "m" goto mega
  202. if "%unit%" == "M" goto mega
  203. if "%unit%" == "g" goto giga
  204. if "%unit%" == "G" goto giga
  205. rem no unit found, must be bytes; consider the whole value
  206. set conv=%value%
  207. rem convert to KB
  208. set /a conv=%conv% / 1024
  209. :kilo
  210. rem convert to MB
  211. set /a conv=%conv% / 1024
  212. goto mega
  213. :giga
  214. rem convert to MB
  215. set /a conv=%conv% * 1024
  216. :mega
  217. set "%~2=%conv%"
  218. goto:eof
  219. :convertxk
  220. set value=%~1
  221. rem extract last char (unit)
  222. set unit=%value:~-1%
  223. rem assume the unit is specified
  224. set conv=%value:~0,-1%
  225. if "%unit%" == "k" goto kilo
  226. if "%unit%" == "K" goto kilo
  227. if "%unit%" == "m" goto mega
  228. if "%unit%" == "M" goto mega
  229. if "%unit%" == "g" goto giga
  230. if "%unit%" == "G" goto giga
  231. rem no unit found, must be bytes; consider the whole value
  232. set conv=%value%
  233. rem convert to KB
  234. set /a conv=%conv% / 1024
  235. goto kilo
  236. :mega
  237. rem convert to KB
  238. set /a conv=%conv% * 1024
  239. goto kilo
  240. :giga
  241. rem convert to KB
  242. set /a conv=%conv% * 1024 * 1024
  243. :kilo
  244. set "%~2=%conv%"
  245. goto:eof
  246. endlocal
  247. endlocal
  248. exit /b %ERRORLEVEL%