Exécuter le script toutes les 30 minutes avec systemd

Je voudrais exécuter un script toutes les 30 minutes après le démarrage dans le système. Je sais que vous pouvez utiliser cron, mais je ne prévois pas d'utiliser cette fonctionnalité souvent, donc je voudrais essayer avec systemd.

Jusqu'à présent, je n'ai trouvé que les timers monotones qui permettent d'exécuter quelque chose une fois (du less je le pense). Comment serait le foo.timer et [email protected] au cas où je voulais exécuter quelque chose toutes les 30 minutes de démarrage / démarrage du système?

[email protected]

 [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... ??? 

Vous devez créer deux files: un pour le service, un autre pour le timer avec le même nom.

Exemple:

/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 

après cela, rechargez le systemd en utilisant la command systemctl daemon-reload et démarrez votre temporisateur par systemctl start test.timer , ou activez-les par défaut.

contenu du test de 1.sh

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

Et command pour vérifier toutes les temporisations disponibles: systemctl list-timers --all

Informations plus détaillées sur la page du projet et exemples sur la page ArchLinux

Voici une autre option sans utiliser votre timer. Si le timing n'est pas terriblement critique et que le script ne fonctionne pas longtime, ce sera parfait pour les choses simples.

 [Unit] Description=Run foo [Service] User=%I Restart=always RestartSec=1800s ExecStart=/bin/bash /home/user/script.sh