Búsqueda de sitios web

Temporizador del sistema


En el sistema operativo Linux, systemd es un administrador de servicios y un administrador del sistema. Actúa como un sistema de inicio cuando se ejecuta como un primer proceso en el arranque. Mantiene y realiza un seguimiento de los servicios del espacio de usuario. Para iniciar los servicios de los usuarios registrados, comienza con instancias separadas. Los temporizadores son archivos unitarios de systemd que tienen una extensión de ".timer". Estos archivos controlan los archivos o eventos “.service” en un sistema.

La mayoría de las veces, los temporizadores se utilizan como reemplazo de CRON. Nos proporciona soporte integrado para eventos de tiempo de calendario. La ventaja de los temporizadores sobre los cronjobs es que proporcionan controles de eventos más detallados. Se utilizan cuando una tarea requiere programación en un sistema operativo Linux. Por ejemplo, si queremos iniciar un proceso cuando nuestra máquina arranca, usamos los temporizadores para ese propósito. Anteriormente, cron era la herramienta para realizar este tipo de trabajos. Pero hoy en día, los temporizadores se utilizan para estos fines.

Los temporizadores son casi como cron en el sentido de que proporcionan un enfoque y un mecanismo para programar tareas en el sistema operativo Linux. Cron tiene sus inconvenientes, por lo que los temporizadores lo están reemplazando. Por ejemplo, si queremos programar nuestra copia de seguridad a las 5 de la tarde y, de alguna manera, nuestro sistema se apaga entre las 4:50 y las 5:10, cron omite la copia de seguridad en ese caso, lo que anula el propósito de la programación.

Para trabajar con temporizadores, necesitamos lo siguiente como requisitos previos:

  • Privilegios de raíz

  • Terminal

Las funciones de los temporizadores Systemd necesitan dos archivos de configuración que son:

Unidad de temporizador: La unidad de temporizador realiza un seguimiento de cuándo utilizar los archivos de servicio. Usan una extensión de “.timer”.

Unidad de servicio: estos son archivos de configuración de la unidad. Gestionan y definen los procesos del sistema. Tienen la extensión “.service” como se mencionó anteriormente.

Ahora, discutimos cómo podemos programar una copia de seguridad automática del servidor. Otra ventaja del servicio systemd es que no permite que sus tareas tengan múltiples instancias. Si de alguna manera, volvemos a iniciar una tarea cuando ya se inició, se salta el tallo de lanzamiento y se mantiene hasta que la tarea en ejecución actual haya completado su trabajo. Después de configurar nuestro servicio systemd y programarlo, creamos un archivo con el mismo nombre que nuestro servicio.

La única diferencia es que tiene una extensión de “.timer” y no de servicio. Por ejemplo, tenemos un servicio llamado “xyz”. En ese caso, tenemos "xyz.service" como nuestro nombre de servicio y "xyz.timer" como el nombre de nuestro temporizador. Otra cosa a tener en cuenta es que ambos archivos deben estar en el mismo directorio.

Pasos para crear un temporizador Systemd

Crear un script de prueba
Este es un script Bash básico como ejemplo:

linux@linux-VirtualBox:~$ nano test.sh

El script anterior imprime la fecha.

Crear un archivo de servicio
Ahora, creamos un archivo de servicio o unidad para ejecutar el script Bash.

linux@linux-VirtualBox:~$ nano  /etc/systemd/system/new.service

Este es un script de ejemplo para crear el archivo de servicio. Tiene dos opciones: una es “Unidad” y la otra es “Servicio”. En este paso, primero le decimos al sistema el nombre de la unidad y lo que está haciendo esta unidad. Luego, definimos un servicio con el tipo de “simple”. Por último, definimos que el servicio se inicia en caso de falla.

Crear un archivo de temporizador
Después de crear el archivo de servicio, ahora creamos un archivo de temporizador. Ejecutamos el siguiente comando para crear un archivo de temporizador:

linux@linux-VirtualBox:~$ nano /etc/systemd/system/test.timer

Tiene tres opciones: “Unidad”, “Temporizador” e “Instalar”. Nuevamente, después de ejecutar el comando, definimos lo que está haciendo nuestra unidad. Tiene una opción de “Temporizador”. Con la ayuda de lo cual, le decimos al sistema cuándo se está ejecutando nuestro script. La última opción, “Instalar”, indica cuándo se inicia nuestro servicio según los niveles de ejecución. Esta opción está habilitada solo cuando un servicio está habilitado con la ayuda de systemctl.

Ahora, analicemos las opciones con más profundidad para controlar mejor los temporizadores.

Unidad: Esto especifica el dispositivo que queremos encender cuando se agote el tiempo. El parámetro pasado es el nombre de una unidad cuya extensión no debe ser “.timer”. Si no podemos hacerlo o no queremos pasar el nombre de la unidad, el valor por defecto es el servicio que tiene el mismo nombre que el nombre del “.timer” en ese caso. Como ya se discutió, el mejor enfoque es que debemos mantener el mismo nombre del servicio y el nombre del temporizador.

Temporizador: La opción de temporizador lleva toda la información sobre el temporizador que se define. En la opción de temporizador, encontramos todas las configuraciones que necesitamos para activar el temporizador. Las secciones del temporizador tienen muchas opciones, tales como:

OnActiveSec=, OnBootSec=, OnStartupSec=, OnUnitActiveSec=, OnUnitInactiveSec=

En la sección del temporizador, también le indicamos al sistema cuándo ejecutar el proceso y cuándo finalizarlo de acuerdo con la zona horaria del servidor.

La sección del temporizador también tiene una opción muy útil e importante que es:

Oncalender = sets

Esta opción define la frecuencia con la que se realiza una tarea. Por ejemplo, si queremos programar una tarea diariamente, usamos esta opción como “OnCalendar=daily”. Esto realiza la tarea diaria.

Si desea ser más específico, también puede pasar un DateTime específico de acuerdo con sus requisitos. Otra cosa a tener en cuenta al trabajar con temporizadores es que los activadores diarios son siempre a la medianoche, que es una hora pico en los sistemas informáticos. Por lo tanto, para evitar problemas durante eso, le recomendamos que utilice el “RandomizeDelaySec=”. Retrasa el horario aleatoriamente con una diferencia de unos segundos. Requiere un valor que represente los segundos que se puede retrasar el temporizador.

El problema es que todos los días siempre se activa a las 12 a.m. Semanalmente siempre se activa los lunes a medianoche. Y Anualmente siempre se activa el primero de enero. Todos estos son tiempos pico y hay una interrupción de la red durante estos en todas partes.

Habilitar e iniciar el temporizador
Este es el paso final de nuestra tarea. Realizamos este paso sistemáticamente. Para realizar esta actividad, debemos hacer un “daemon-reload”. Para ver si se crea un archivo nuevo o se actualiza un archivo antiguo, se vuelve a cargar todo el sistema.

Resolución de problemas
A veces, no podemos detectar todos los problemas de antemano. En el temporizador systemd, podemos asegurarnos de capturarlos verificando las unidades del temporizador "systemd" antes de habilitarlas. Para hacerlo, usamos el comando "systemd-analyze-verify". Este comando nos ayuda a encontrar un problema potencial y solucionarlo en consecuencia.
También hay otros comandos que nos ayudan a solucionar problemas y diagnosticar nuestros temporizadores. Por ejemplo, existe un comando que nos ayuda a verificar si nuestro servicio se ejecuta con éxito o no. El comando es el siguiente:

linux@linux-VirtualBox:~$ sudo journalctl -S today -f -u test.service

Este comando nos muestra cuándo se inició el servicio por última vez y el resultado de nuestro comando Bash como se muestra en el siguiente fragmento:

Conclusión

Estudiamos el temporizador del sistema. Después de obtener una revisión detallada de lo que es un temporizador del sistema y su funcionamiento, implementamos un ejemplo para explicarle la idea más brevemente en el que explicamos cada paso en varias partes.

Artículos relacionados: