Ventana principal de NSSM
Los servicios de Windows son programas que funcionan en segundo plano sin la necesidad de que un usuario los ejecute. Un concepto similar a los Daemon de los sistemas UNIX. Siendo posible configurarlos para que se inicien al arrancar el sistema, cuando se produce un evento o dejarlos configurados para que sea un usuario quien los ponga en marcha. Los servicios, al igual que los Daemom en UNIX, son una parte clave del sistema operativo Windows existiendo decenas de estos ya que permiten realizar tareas automáticamente sin que un usuario tenga que estar conectado. Configurar un servicio en Windows suele ser algo complicado con las herramientas que vienen por defecto, pero para solucionar este problema se puede recurrir a NSSM (the Non-Sucking Service Manager).
Tabla de contenidos
Antes de poder crear un servicio con NSSM en primer lugar es necesario descargar el programa. Lo que se puede hacer desde la página web del proyecto. Al descargarlo se obtiene un archivo ZIP con el código fuente, una versión compilada para sistemas Windows de 32 bits y otra para los 64 bits. Afortunadamente el programa no requiere instalación, solamente será necesario seleccionar el archivo EXE más adecuado para nuestro sistema y ejecutar esta.
Para crear un nuevo servicio con nssm solamente hay que acceder a la ruta donde se descargó el programa y acceder a la carpeta con el compilado correspondiente a la versión del sistema operativo con el que se está trabajando. Ejecutando en la esta carpeta el siguiente comando
nssm install <servicename> donde hay que reemplazar <servicename> por el nombre del servicio que se desea configurar. Habitualmente Windows pedirá confirmación para modificar la configuración del sistema con este programa, lo que se deberá hacer con unas credenciales de administrador. Una vez confirmado que deseamos modificar la configuración del sistema aparecerá una ventana como la siguiente.
Ventana que cuenta con 10 pestañas para configurar las diferentes opciones del servicio, las cuales se explican a continuación.
La pestaña Application es la única hay que completar en todos los casos, dado que es la que contiene la configuración básica del servicio. En esta se define la ruta donde se encuentra el programa, la carpeta en la que se ejecutará y las opciones que se le han de pasar el servicio. Lo que se debe indicar en los diferentes campos del formulario:
El campo Path puede ser un algo confuso, ya que es la ruta al programa ejecutable. Cuando se crea un servicio en Python no se debe indicar la ruta al script, sino que la ruta al intérprete de Python. El script con el programa se deberá pasar en el campo Arguments. Si se ha indicado la carpeta donde se encuentra los archivos de script en Startup directory, solamente será necesario indicar el nombre del archivo en Arguments.
La segunda pestaña sirve para darle un nombre y una descripción al servicio. Quizás el punto más importante de esta es si se desea que el servicio se inicie de forma automática o no. Aunque esto se puede cambiar posteriormente.
En la pestaña Log on se puede seleccionar la cuenta de usuario que ejecutará el servicio. El propio nssm comprobará automáticamente si la cuenta indicada tiene los permisos necesarios para iniciar la sesión como servicio.
Mediante la pestaña Dependencies se puede indicar los servicios o grupos de servicios que deben iniciarse antes del que se está configurando. Evitando de este modo que falle el proceso de arranque por la falta de alguna dependencia.
A través de la pestaña Process se puede indicar la prioridad con la que se ejecutará el servicio y su afinidad. Por defecto, el servicio se ejecuta con prioridad normal y usará todas las CPU. En el caso de que se desee restringir la ejecución del servicio solamente a un subconjunto de las CPU se deberá desmarcar All processors y seleccionar las que se desee.
En la pestaña Shutdown se pueden seleccionar los diversos tiempos de detención y tiempos de espera que se usan al ordenar la aplicación después de un bloqueo o cuando el servicio se detiene correctamente.
La pestaña Exit actions permite modificar el reinicio de la aplicación y la acción predeterminada al finalizar este. Al mismo tiempo también se puede especificar la introducción de un retraso entre los reinicios automáticos del servicio.
Para los casos en los que se necesita redirigir la entrada y salida del servicio a un archivo esto se puede hacer mediante los campos de la pestaña I/O. Generalmente es suficiente con redirigir los valores de salida (stdout) y de error (stderr) para tener toda la información que el programa puede generar durante su ejecución. Algo con lo que se pude conseguir un log básico del servicio.
La pestaña File rotation se debe usar junto la anterior para definir la política de rotación de archivos E/S. Para eliminar los archivos generados después de un tiempo, evitando de esta manera que el espacio ocupado por el log en el disco crezca sin límite.
Finalmente, mediante la pestaña Enviroment se puede especificar una lista de variables de entorno, una en cada línea, que se pasan a la aplicación. Si la casilla de verificación Replace default environment (Reemplazar entorno predeterminado) se selecciona el servicio únicamente recibirá las variables indicadas aquí, eliminando los valores por defecto. Por otro lado, si se dejan sin marcar se combina ambas.
Aunque la interfaz gráfica es muy útil para iniciar los diferentes servicios, si se desea realizar un único cambio puede ser más rápido usar la línea de comandos. Para modificar una opción de un servicio solamente se tiene que pasar el parámetro adecuado a nssm. Así para crear un servicio básico escrito en Python desde la línea de comando solamente se tendrá que escribir.
nssm set myservice Application "C:\Python\Python 3.9\python.exe" nssm set myservice AppDirectory "C:\Services" nssm set myservice AppParameters myservice.py
En la primera línea se crea un servicio llamado myservice que se va a ejecutar con Python 3.9. Indicando en esta línea la ruta al intérprete. Posteriormente, en la segunda línea, se indica la ruta donde se ejecutará, una carpeta en el disco duro a la que se llama Services. Finalmente se indica el archivo con el código Python que se desea ejecutar, en este caso myservice.py que debe estar ubicado en C:\Services.
En esta entrada hemos visto una solución para configurar los servicios en Windows de una forma más eficiente que la que existe por defecto. Facilitando enormemente esta tarea. Quizás no sea algo que se hace habitualmente, pero saber configurar un servicio en Windows puede ser de ayuda cuando es necesario.
“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…
Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…
Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…
Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…
En el octavo aniversario de Analytics Lane seguimos ampliando nuestro laboratorio de aplicaciones interactivas y,…
Hoy, 2 de mayo de 2026, Analytics Lane cumple exactamente ocho años. Todo empezó con…
This website uses cookies.