LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

Systemd

El mundo de Linux está lleno de cosas divertidas e interesantes , cuanto más profundizamos, más encontramos tipos de cosas.

En nuestros esfuerzos por brindarle esos pequeños trucos y consejos que lo diferencian de los demás, aquí hemos creado algunos métodos alternativos para programar un trabajo sin usar la utilidad cron en Linux.

Programar un trabajo/comando en Linux es un acrónimo de cron. Siempre que necesitamos programar un trabajo, llamamos al comando cron , pero ¿sabe que podemos programar un trabajo más adelante sin maíz? Puede hacerlo utilizando los siguientes enfoques comunes.

Tabla de contenido

  • 1. Programación de trabajos en Linux usando Sleep Loop
  • 2. Programe tareas con temporizadores Systemd
  • 3. Programación de tareas con Anacron

1. Programación de trabajos en Linux usando Sleep Loop

Ejecute un comando (digamos fecha ) cada 5 segundos y escriba el resultado en un archivo (digamos fecha.txt ). Para lograr este escenario, debemos ejecutar el siguiente script de una sola línea directamente en el símbolo del sistema.

$ while true; do date >> date.txt ; sleep 5 ; done &

Anatomía del script de una sola línea anterior:

  • while true: solicita que el script se ejecute mientras la condición sea verdadera; actúa como un bucle que hace que el comando se ejecute una y otra vez o diga en un bucle.
  • do : realiza lo que sigue, es decir, ejecuta el comando o conjunto de comandos que se encuentran antes de la declaración do.
  • date >> date.txt: - aquí la salida del comando date se escribe en un archivo date.txt . Además, tenga en cuenta que hemos utilizado, y asegúrate de usar >> y no >.
  • >>garantiza que el archivo ( date.txt ) no se sobrescriba cada vez que se ejecuta el script. Simplemente agrega los cambios. Mientras que > sobrescribe el archivo una y otra vez.
  • sleep 5: - le pide al shell que mantenga una diferencia de tiempo de 5 segundos antes de ejecutarse nuevamente. Tenga en cuenta que el tiempo aquí siempre se mide en segundos. Digamos que si desea ejecutar el comando cada 6 minutos, debe usar ( 6*60 ) 360, en una sucesión de suspensión.
  • done: – marca el final de un bucle while.
  • &: – Poner todo el proceso en bucle en segundo plano.

De manera similar, podemos ejecutar cualquier script de la misma manera. Aquí está el comando para llamar a un script después de un cierto intervalo (digamos 100 segundos ) y el nombre del script es script_name.sh.

También vale la pena mencionar que el script anterior debe ejecutarse en el directorio donde se encuentra el script que se llamará; de lo contrario, debe proporcionar una ruta completa ( /home/$USER/…/script_name.sh).

La sintaxis para llamar al script en el intervalo descrito anteriormente es:

$ while true; do /bin/sh script_name.sh ; sleep 100 ; done &

Nota : La frase anterior no reemplaza a Cron , porque la utilidad Cron admite una gran cantidad de opciones, en comparación, y es muy flexible y personalizable.

Sin embargo, si queremos ejecutar ciertos casos de prueba o pruebas comparativas de E/S, entonces el comando único anterior servirá para ese propósito.

2. Programe tareas con temporizadores Systemd

En la mayoría de las distribuciones modernas de Linux , Systemd es el sistema de inicio predeterminado y viene con una funcionalidad de temporizador que puede permitirle programar sus tareas.

Primero, cree un nuevo archivo de unidad de temporizador systemd.timer con una extensión como se muestra.

$ sudo nano /etc/systemd/system/myjob.timer

Agregue el siguiente contenido al archivo: myjob.timer:

[Unit]
Description=My Job Timer

[Timer]
OnCalendar=*-*-* 00:00:00
# Replace the OnCalendar value with the desired schedule

[Install]
WantedBy=timers.target
 

El campo OnCalendar en una unidad de temporizador systemd le permite especificar la programación de su trabajo usando un formato específico.

  • Yearly : anual o anualmente
  • Monthly : mensual
  • Weekly : semanal
  • Daily : diariamente o medianoche
  • Hourly : cada hora
  • Minutes : puede especificar un minuto específico usando el formato *:MM(por ejemplo, *:15por cada 15 minutos) o un rango específico usando MM-MM (por ejemplo, 10-30 por cada minuto de 10 a 30).

A continuación se muestran algunos ejemplos para ilustrar el formato:

## Ejecutar todos los días a las 3:00 a. m. ##
OnCalendar=*-*-* 03:00:00

## Todos los lunes y viernes a las 10:00 a. m. ##
OnCalendar=Mon,Fri *-*-* 10:00:00
# Ejecutar cada 30 minutos: ##
OnCalendar=*-*-* *:0/30:00

A continuación, cree un archivo de unidad de servicio correspondiente con una .serviceextensión en el mismo directorio:

$ sudo nano /etc/systemd/system/myjob.service

Agregue el siguiente contenido al myjob.servicearchivo:

[Unit]
Description=My Job

[Service]
ExecStart=/path/to/your/job.sh
# Replace "/path/to/your/job.sh" with the actual command or script to execute

[Install]
WantedBy=multi-user.target

Habilite e inicie el temporizador:

$ sudo systemctl enable myjob.timer
$ sudo systemctl start myjob.timer

Esto programará su trabajo para que se ejecute según el temporizador especificado.

3. Programación de tareas con Anacron

Anacron es un programador de trabajos basado en el tiempo que le permite programar trabajos periódicamente en sistemas que no siempre están encendidos. Está diseñado para sistemas que pueden no tener acceso regular a cron. Si Anacron está instalado en su sistema, puede usarlo para programar su trabajo.

Si no está instalado, puede instalarlo usando su administrador de paquetes.

$ sudo apt install anacron        [En Debian, Ubuntu y Mint ]
$ sudo yum install anacron        [En RHEL/CentOS/Fedora y Rocky/AlmaLinux ]
$ sudo emerge -a sys-apps/anacron [En Gentoo Linux ]
$ sudo apk add anacron            [En Alpine Linux ]
$ sudo pacman -S anacron          [En Arch Linux ]
$ sudo zypper install anacron     [En OpenSUSE ]    
 

Cree un nuevo archivo de configuración ( myjob.sh ) para su trabajo en el directorio /etc/anacrontab.d/ .

$ sudo nano /etc/anacrontab.d/myjob.sh

En el archivo de configuración, especifique los detalles de su trabajo.

# Ejecute myjob.sh todos los días con un retraso de 5 minutos
1 5 myjob /path/to/myjob.sh

Los campos del archivo de configuración tienen los siguientes significados:

  • El primer campo es el período de tiempo en el que se debe ejecutar el trabajo @daily , @weekly , @monthly o @yearly .
  • El segundo campo es el tiempo en minutos para retrasar la ejecución del trabajo después de que se inicia el sistema.
  • El tercer campo es el nombre del trabajo, que se utilizará para crear archivos de registro.
  • El cuarto campo es el comando o script que se ejecutará.

Ahora, Anacron ejecutará automáticamente su trabajo de acuerdo con el cronograma especificado.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías