Windows [Herramienta 04] Instrucciones del sitio web oficial de WinSW y ejemplos compartidos (registrar exe y jar como servicios) para lograr el reinicio automático del servicio después de reiniciar el servidor

Github oficial ; dirección de descarga oficial . Es difícil descargarlo sin la aceleración de Git. Permítanme compartirles la última versión estable de v2.12.0la conexión del disco de red con fecha de lanzamiento 2023.01.29.
Archivos incluidos:

  • WinSW-x64.exe
  • muestra-minimal.xml
  • muestra-todas las opciones.xml

Enlace: https://pan.baidu.com/s/1sN3hL5HvFzzNwuz8npaQNw
Código de extracción: vsvg

¿Por qué registrarse como servicio?: El servicio puede reiniciarse solo después de reiniciar el servidor.

1. Instrucciones de uso en el sitio web oficial.

1.1 Instrucciones de configuración para su uso

Utilice WinSW como herramienta global

  1. Tome WinSW.exe o WinSW.zip de la distribución.
  2. Escriba myapp.xml (consulte la especificación del archivo de configuración XML y los ejemplos para obtener más detalles).
  3. Ejecute winsw install myapp.xml [opciones] para instalar el servicio.
  4. Ejecute winsw start myapp.xml para iniciar el servicio.
  5. Ejecute winsw status myapp.xml para ver si su servicio está en funcionamiento.

Utilizado como herramienta global, diferentes servicios utilizan diferentes archivos xml para las operaciones.

Utilice WinSW como herramienta incluida

  1. Tome WinSW.exe o WinSW.zip de la distribución y cambie el nombre del .exe a su gusto (como myapp.exe).
  2. Escriba myapp.xml (consulte la especificación del archivo de configuración XML y los ejemplos para obtener más detalles).
  3. Coloque esos dos archivos uno al lado del otro, porque así es como WinSW descubre su configuración correlacionada.
  4. Ejecute myapp.exe install [opciones] para instalar el servicio.
  5. Ejecute myapp.exe start para iniciar el servicio.

Cuando se usa como herramienta de enlace, el archivo xml con el mismo nombre se usa de forma predeterminada para la operación. Personalmente, creo que este método es más adecuado para socios de implementación.

Archivo de configuración de muestra

Usted escribe el archivo de configuración que define su servicio. El siguiente ejemplo es un ejemplo primitivo que se utiliza en el proyecto Jenkins:

<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>

La especificación completa del archivo de configuración está disponible aquí . Puede encontrar más ejemplos aquí .
Este ejemplo de archivo de configuración es un archivo ejecutable típico + parámetros, adecuado para muchos servicios.

1.2 Uso

WinSW está siendo administrado por el archivo de configuración XML .
Su binario WinSW.exe renombrado también acepta los siguientes comandos:

Dominio Descripción
instalar Instala el servicio.
desinstalar Desinstala el servicio.
comenzar Inicia el servicio.
detener Detiene el servicio.
Reanudar Detiene y luego inicia el servicio.
estado Comprueba el estado del servicio.
actualizar Actualiza las propiedades del servicio sin reinstalar.
personalizar Personaliza el ejecutable contenedor.
desarrollador Comandos experimentales.

Comandos experimentales:

Dominio Descripción
PD del desarrollador Dibuja el árbol de procesos asociado al servicio.
muerte del desarrollador Finaliza el servicio si ha dejado de responder.
lista de desarrolladores Enumera los servicios administrados por el ejecutable actual.

La mayoría de los comandos requieren privilegios de administrador para ejecutarse. WinSW solicitará UAC en sesiones no elevadas.
Estos comandos no se explicarán en detalle y se presentarán cuando se utilicen.

2.Ejemplo de intercambio

2.1 Registrar el exe como servicio.

Aquí utilizamos MinIO de almacenamiento de objetos minio.execomo Use WinSW as a bundled toolejemplo. Los pasos detallados son los siguientes:

  1. pasará WinSW-x64.exea llamarseminio-server.ext
  2. El contenido del archivo de configuración agregado minio-server.ximes el siguiente y se pueden ver los detalles de la configuraciónsample-allOptions.xml
<service>
  <id>minio-server</id>
  <name>MinIO-Server</name>
  <description>This service runs MINIO OBJECT STORE.</description>
  <env name="MINIO_HOME" value="%BASE%"/>
  <executable>%BASE%\minio.exe</executable>
  <arguments>server D:\minio_data --console-address ":9001"</arguments>
  <logpath>%BASE%\logs</logpath>
  <log mode="roll-by-size-time">
    <sizeThreshold>1024</sizeThreshold>
    <pattern>yyyyMMdd</pattern>
    <autoRollAtTime>00:00:00</autoRollAtTime>
    <zipOlderThanNumDays>5</zipOlderThanNumDays>
    <zipDateFormat>yyyyMMdd</zipDateFormat>
  </log>
  <env name="MINIO_ROOT_USER" value="admin" />
  <env name="MINIO_ROOT_PASSWORD" value="admin123" />
</service>
  1. cmdEjecute el comando minio-server.exe installpara instalarlo como un servicio (el servicio no se inicia en este momento)
INFO  - Installing service 'MinIO-Server (minio-server)'...
INFO  - Service 'MinIO-Server (minio-server)' was installed successfully.
  1. Ejecute el comando minio-server.exe startpara iniciar el servicio.

Prueba de proceso completo:

Insertar descripción de la imagen aquí

2.2 Registrar jar como servicio

math-game.jarAquí utilizamos el paquete Arthas (Alsacia) para realizar pruebas Use WinSW as a bundled toolcomo ejemplo. Los pasos detallados son los siguientes:

  1. pasará WinSW-x64.exea llamarsemath-game-server.exe
  2. Agregue el math-game-server.xmlcontenido del archivo de configuración de la siguiente manera
<service>
  <id>math-game-server</id>
  <name>Math-Game-Server</name>
  <description>This service runs math-game server.</description>
  <env name="MATHGAME_HOME" value="%BASE%"/>
  <executable>java</executable>
  <arguments>-Xrs -Xmx128m -jar "%BASE%\math-game.jar"</arguments>
  <logpath>%BASE%\logs</logpath>
  <log mode="roll-by-size-time">
    <sizeThreshold>1024</sizeThreshold>
    <pattern>yyyyMMdd</pattern>
    <autoRollAtTime>00:00:00</autoRollAtTime>
    <zipOlderThanNumDays>5</zipOlderThanNumDays>
    <zipDateFormat>yyyyMMdd</zipDateFormat>
  </log>
</service>

El parámetro -Xrs es la abreviatura de "Reducir el uso de la señal", que le indica a la JVM que reduzca el uso de las señales del sistema operativo. Normalmente, la JVM captura algunas señales del sistema operativo, como SIGTERM (señal de terminación) y SIGINT (señal de interrupción), para cerrar correctamente el proceso Java. Sin embargo, con el parámetro -Xrs, la JVM minimizará el uso de estas señales y, en su lugar, dependerá del código Java para manejar la operación de apagado. Esto puede mejorar la estabilidad de la JVM en determinadas situaciones.

  1. cmdEjecute el comando math-game-server.exe installpara instalarlo como servicio (el servicio no se inicia en este momento y el estado es: detenido)
INFO  - Installing service 'Math-Game-Server (math-game-server)'...
INFO  - Service 'Math-Game-Server (math-game-server)' was installed successfully.
  1. Ejecute el comando minio-server.exe startpara iniciar el servicio.

Registro impreso después del inicio:

Insertar descripción de la imagen aquí

Al igual que el exe, aquí solo se realiza una parte de la prueba:

Insertar descripción de la imagen aquí

3. Resumen

WinSW (Windows Service Wrapper) es un proyecto de código abierto que permite convertir cualquier archivo ejecutable (normalmente una aplicación .NET, una aplicación exe, un archivo Java JAR, etc.) en un servicio de Windows. El objetivo de WinSW es ​​facilitar la ejecución de servicios que no son de Windows en sistemas operativos Windows. Proporciona una forma de empaquetar aplicaciones como servicios de Windows, lo que le permite iniciar, detener, pausar y reanudar aplicaciones como servicios.

Las siguientes son las principales características y usos de WinSW:

  1. Empaquetado de aplicaciones como servicios : WinSW le permite empaquetar varios tipos de aplicaciones como servicios de Windows sin modificar el código de la aplicación. Esto es útil para implementar aplicaciones normales como servicios.
  2. Administración simplificada : una vez que una aplicación se empaqueta como un servicio, puede administrarla utilizando el Administrador de servicios de Windows o herramientas de línea de comandos como sccomando. Esto hace que la implementación y administración de aplicaciones en Windows sea más conveniente.
  3. Configuración personalizada : WinSW le permite personalizar el comportamiento del servicio a través de archivos de configuración XML o YAML, incluido el nombre del servicio, descripción, directorio de trabajo, parámetros de inicio, etc. Esto le permite configurar de manera flexible el servicio para satisfacer diferentes necesidades.

Supongo que te gusta

Origin blog.csdn.net/weixin_39168541/article/details/132854535
Recomendado
Clasificación