Los servicios en Linux se inician tan pronto como su sistema arranca o se reinicia. Así es como puede crear un servicio systemd de inicio automático en su PC con Linux.

systemd es el administrador de servicios de muchas distribuciones de Linux conocidas. Un servicio es una unidad de un programa que normalmente se ejecuta en segundo plano. Los servicios, por naturaleza, se inician automáticamente tan pronto como se inicia el sistema y pueden ejecutarse sin supervisión.

Si necesita crear una tarea o programa de inicio automático que se ejecute cada vez que inicie o reinicie su sistema, puede considerar crear un nuevo servicio. Aprendamos cómo crear un nuevo servicio systemd personalizado en Linux.

Paso 1: crear el archivo de servicio

Se requieren algunos pasos para crear un nuevo archivo de servicio systemd. El primero de ellos es la creación del fichero unitario del servicio. Antes de crear un archivo de servicio, debe comprender su estructura.

Estudiemos el archivo de servicio extrayendo un archivo de servicio real y funcional de su sistema Linux. A continuación, puede ver el archivo de servicio para el servicio del demonio vmtools.

instagram viewer

Es posible que este servicio en particular no esté presente en su sistema a menos que también esté ejecutando Linux en VMware con las herramientas de VMware instaladas. El servicio en cuestión no es importante porque todos los servicios, o mejor dicho, los archivos de la unidad de servicio, tienen la misma estructura base con algunas personalizaciones según sea necesario.

Todos los archivos de servicio de systemd deben tener tres secciones: [Servicio], [Unidad], y [Instalar]y algunos parámetros debajo de cada sección. Esto es lo que contiene cada sección y por qué son importantes:

1. Unidad

El Unidad La sección incluye metadatos importantes como una descripción y dependencias del servicio. Tiene tres parámetros: Descripción, Antes, y Después. Como el mismo sugiere, la Descripción El parámetro proporciona algún contexto del servicio y lo que hace.

El Antes y Después Los parámetros definen las condiciones que se deben cumplir para que se ejecute el servicio. Por ejemplo, si está iniciando un servicio de servidor web, querrá que se inicie solo después de que el servicio de red esté en línea. Así que usted establecería el valor de la Después parámetro al servicio de red.

2. Servicio

El Servicio contiene dos parámetros obligatorios: ExecStart, Tipo, y algunos otros parámetros opcionales como ExecRecargar, y más.

ExecStart define el comando que se ejecutará cuando se inicie el servicio, mientras que el Tipo El parámetro determina el tipo de proceso a generar.

3. Instalar

Esta sección y sus datos son llamados cada vez que habilitas o deshabilitas el servicio con el comando systemctl.

Tiene un par de parámetros. Uno de los comunes y necesarios es Buscado por. El Buscado por El parámetro define las unidades de destino que deben comenzar cada vez que se habilita el servicio. El valor predeterminado es objetivo multiusuario.

Los parámetros mencionados aquí no son los únicos parámetros que puede configurar en un archivo de unidad. Puede obtener la lista completa de parámetros de la documentación oficial systemd.exec o escribiendo hombre systemd.exec en una terminal.

Un archivo de unidad de servicio systemd siempre termina con ".servicio" extensión y debe almacenarse en el /etc/systemd/system/ directorio. Crear el archivo de servicio usando el comando táctil con privilegios elevados prefijándolo con el sudo dominio:

sudo touch /etc/systemd/system/.servicio 

Ahora que ha creado el archivo de servicio, vamos a llenarlo con la sintaxis necesaria para que el servicio sea válido y funcione.

Paso 2: Configuración del archivo de servicio

Para la demostración, creará un servicio de muestra que se ejecuta Nmap para escanear los puertos en su máquina y almacene la salida en un archivo cada treinta segundos. Para lograr esta tarea, aquí se explica cómo estructurar el archivo de la unidad de servicio:

[Unidad]
Description=Demostración del servicio nmap personalizado.
After=red.objetivo

[Servicio]
Tipo=sencillo
Usuario=raíz
ExecStart=/usr/bin/nmap -sS -O -oN /inicio//resultados.txt localhost
Reiniciar=siempre
Reiniciar segundo = 30

[Instalar]
WantedBy=multi-usuario.objetivo

Aunque los parámetros mencionados aquí se han explicado anteriormente, repasemos cómo afectan a nuestro servicio recién creado y también exploremos los nuevos introducidos en esta unidad: Reanudar, Reiniciar segundo, y Usuario.

Esto es lo que significan los parámetros en cada sección:

  • Descripción: Texto legible por humanos para describir las funcionalidades del servicio.
  • After=red.objetivo: Dictar a systemd que este servicio depende de red.objetivo y sólo debe comenzar después de la red.objetivo se ha iniciado el servicio. Tenga en cuenta que Después no se utiliza para establecer ninguna relación de dependencia directa, simplemente actúa como disparador.
  • Tipo=sencillo: Hay varios tipos de servicios. Sin embargo, el servicio en esta demostración es un proceso regular y por lo tanto lo declaramos así. Puede encontrar todos los diferentes valores para esto en la página de documentación oficial vinculada anteriormente.
  • Reiniciar = siempre: Esto significa que cada vez que el servicio sale, siempre debe reiniciarse.
  • Reiniciar segundo = 30: Esto establece el intervalo entre cada inicio del servicio en 30 segundos.
  • Usuario=raíz: Esto define que el servicio se ejecutará como usuario raíz. En este caso, este es un paso obligatorio ya que Nmap no podrá ejecutarse sin privilegios de root.
  • Inicio ejecutivo: Esta directiva contiene la ruta absoluta al programa que se ejecutará junto con todos los indicadores o argumentos necesarios para que el programa funcione correctamente.
  • WantedBy=multi-usuario.objetivo: Este parámetro en un archivo de servicio especifica qué objetivo debe incluir o "querer" el servicio. Cuando un servicio se incluye en un destino, significa que el servicio debe iniciarse cuando el sistema alcance ese destino durante el proceso de arranque. En este caso, el servicio debería iniciarse cuando el sistema ingrese al modo multiusuario. El modo multiusuario es un estado en el que el sistema se inicia por completo y permite que varios usuarios inicien sesión y utilicen el sistema.

Paso 3: habilitar e iniciar el servicio

Ahora que ha creado el archivo de la unidad, los únicos pasos que quedan para activar su servicio son habilitarlo y ejecutarlo. Puede habilitar e iniciar su servicio usando el comando systemctl.

Aquí se explica cómo usar systemctl para habilitar, iniciar y verificar el estado de su servicio:

Habilitar sudo systemctl .servicio
sudo systemctl iniciar .servicio
sudo systemctl estado .servicio

¡Ahora, su servicio personalizado debería estar en funcionamiento! En este caso, debería ver un escaneo de Nmap ejecutándose cada treinta segundos y la salida se almacena en el resultados.txt archivo en el directorio de inicio.

¡Configurar un servicio systemd en Linux es fácil!

Si bien configurar un servicio personalizado desde cero puede parecer desalentador al principio, es una manera bastante fácil de configurar un proceso autoejecutable y desatendido para llevar a cabo tareas repetitivas para usted y mejorar su productividad.

En el servicio de demostración, apenas hemos arañado la superficie de cómo puede configurar y configurar un servicio. Para aprender todo sobre cómo puede personalizar su servicio, se recomienda que consulte la documentación oficial vinculada en la nota.

Si configurar y mantener un servicio le parece una tarea demasiado grande, considere buscar una forma alternativa de automatizar tareas repetitivas en Linux.