linux – Ejecute el script cada 30 minutos con systemd

Pregunta:

Me gustaría ejecutar un script cada 30 minutos después de iniciar el sistema. Sé que puedes usar cron, pero no planeo usar esta función a menudo, por lo que me gustaría probarla con systemd.

Hasta ahora solo he encontrado los temporizadores monótonos que permiten ejecutar algo una vez (al menos eso creo). ¿Cómo se verían foo.timer y foo@user.service en caso de que quisiera ejecutar algo cada 30 minutos desde el inicio / inicio del sistema?

foo@user.service

[Unit]
Description=run foo
Wants=foo.timer

[Service]
User=%I
Type=simple
ExecStart=/bin/bash /home/user/script.sh

foo.timer

[Unit]
Description=run foo

[Timer]
where I am stuck... ???

Respuesta:

Necesita crear dos archivos: uno para el servicio, otro para el temporizador con el mismo nombre.

ejemplo:

/etc/systemd/system/test.service

[Unit]
Description=test job

[Service]
Type=oneshot
ExecStart=/bin/bash /tmp/1.sh

/etc/systemd/system/test.timer

[Unit]
Description=test

[Timer]
OnUnitActiveSec=10s
OnBootSec=10s

[Install]
WantedBy=timers.target

después de eso, vuelva a cargar systemd usando el comando systemctl daemon-reload e inicie su temporizador con systemctl start test.timer , o habilítelo de forma predeterminada ( systemctl enable test.timer ).

contenido de prueba de 1.sh

#!/bin/bash
echo `date` >> /tmp/2

Y comando para verificar todos los temporizadores disponibles: systemctl list-timers --all

Información más detallada en la página del proyecto y ejemplos en la página ArchLinux

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım