Utilisation des temporisateurs Systemd en remplacement des tâches Cron
En tant qu’utilisateur Linux, vous connaissez probablement cron. Il a fonctionné comme planificateur de tâches basé sur le temps Unix pendant de nombreuses années. Aujourd’hui, de nombreux utilisateurs utilisent les minuteurs Systemd pour remplacer la domination de cron. Cet article abordera les bases de la configuration de votre propre minuteur systemd et de la vérification de son bon fonctionnement sur votre système.
Pourquoi utiliser les temporisateurs Systemd plutôt que Cron ?
L’un des principaux arguments de vente des temporisateurs Systemd est qu’ils sont entièrement intégrés à l’écosystème Systemd. Cela signifie qu’il est très facile de planifier et de lier différentes unités de service Systemd entre elles, ce qui facilite l’automatisation des tâches par rapport à un démon cron traditionnel.
Un autre avantage des temporisateurs Systemd par rapport à Cron est qu’ils offrent un contrôle plus détaillé sur la manière de déclencher vos tâches planifiées. Par exemple, les temporisateurs Systemd ont une OnBootSec
variable qui vous permet de retarder votre unité de service jusqu’à ce qu’un certain laps de temps se soit écoulé après un démarrage réussi.
Enfin, les temporisateurs Systemd sont également incroyablement précis par rapport à un démon cron standard. Par défaut, il peut suivre et exécuter des tâches jusqu’à une microseconde à l’aide de sa AccuracySec
variable. Cela est incroyablement utile si vous utilisez un ordinateur qui nécessite des timings exacts pour ses tâches planifiées.
Installation des temporisateurs Systemd
Les temporisateurs sont une fonction intégrée de Systemd. Cela signifie que si vous utilisez Systemd comme démon d’initialisation, comme c’est le cas avec les distributions Linux populaires telles qu’Arch, Fedora et Ubuntu, votre machine bénéficie déjà de cette fonctionnalité sur certains de ses processus système.
Pour vérifier si votre distribution exécute Systemd, vous pouvez exécuter la commande suivante :
Cela répertoriera toutes les unités, périphériques et minuteries Systemd actuellement en cours d’exécution sur votre système.
Lister les minuteries existantes
Le moyen le plus simple de vérifier si un minuteur est en cours d’exécution sur votre compte utilisateur actuel est d’utiliser la commande suivante :
Vous pouvez également utiliser l’ --all
indicateur pour vérifier chaque minuteur du système, y compris ceux inactifs :
Cela imprimera la date et l’heure d’activation de chaque minuterie, le compte à rebours jusqu’à ce point, le temps écoulé depuis la dernière exécution, le nom de l’unité de la minuterie elle-même et le service que chaque unité de minuterie active.
Créer un nouveau service et une minuterie
La première étape de la création d’un minuteur Systemd consiste à créer ou à rechercher un service existant auquel l’attacher. En effet, chaque minuteur doit être attaché à une unité de service parent. Cette section vous guidera tout au long du processus de création d’un minuteur pour un service Systemd personnalisé.
Commencez par créer les fichiers vierges « .service » et « .timer » dans votre répertoire personnel :
Ouvrez votre nouveau fichier de service à l’aide de votre éditeur de texte préféré :
Collez le modèle suivant dans votre nouveau fichier de service :
Enregistrez votre fichier « .service », puis ouvrez votre fichier « .timer » vierge en utilisant le même éditeur de texte :
Collez le bloc de code suivant dans votre fichier de minuterie :
Accédez à la [Timer]
section, puis remplacez la valeur de la OnCalendar
variable par la date et l’heure auxquelles vous souhaitez que votre unité Systemd s’exécute. Dans mon cas, je souhaite que mon programme s’exécute exactement à 11h43 tous les jours.
Créer un minuteur monotone
Outre la possibilité de définir un minuteur qui s’exécute à une date précise, il est également possible de créer un minuteur monotone qui s’exécute en fonction du temps de fonctionnement actuel de votre ordinateur. Cela est utile si vous planifiez une tâche sur une machine qui ne fonctionne pas en permanence, comme sur un ordinateur de bureau ou un ordinateur portable.
Pour commencer, ouvrez votre fichier « .timer », puis faites défiler jusqu’à la [Timer]
section.
Supprimez les variables OnCalendar
et Persistent
, puis ajoutez OnBootSec
suivi d’un intervalle de temps pour l’exécution de votre fichier d’unité. Par exemple, le définir sur « 1 h » indiquera à Systemd de lancer votre commande une heure après le démarrage réussi de votre ordinateur.
Ajoutez la OnUnitActiveSec
variable juste en dessous OnBootSec
, puis indiquez l’intervalle pendant lequel vous souhaitez que votre minuteur s’exécute en continu après le démarrage de votre système. Dans mon cas, je le définirai sur « 30 min » car je souhaite que ma tâche s’exécute toutes les 30 minutes après son exécution initiale.
Création d’un temporisateur transitoire
L’un des avantages de l’intégration profonde de Systemd Timer dans Systemd est qu’il peut tirer parti des autres programmes adjacents du démon init. Par exemple, il est possible d’utiliser des temporisateurs avec Systemd-run pour créer des tâches transitoires ponctuelles sur votre machine.
Pour créer un minuteur temporaire simple, collez la ligne de code suivante dans une session de terminal, puis remplacez la valeur de la --on-calendar
variable par l’intervalle pendant lequel vous souhaitez que votre commande s’exécute :
Ajoutez la commande que vous souhaitez exécuter à la fin de la ligne, puis appuyez Enterpour la programmer.
Vous pouvez également créer des minuteries monotones temporaires en utilisant à la fois les variables --on-boot
et --on-unit-active
:
Confirmez que votre minuteur temporaire est désormais mis en file d’attente sur le planificateur de tâches de Systemd en exécutant la commande suivante :
Exécution du minuteur Systemd
Pour exécuter votre nouveau minuteur Systemd, vous devez vous assurer qu’il est correctement chargé sur votre session Systemd actuelle. Pour cela, copiez votre service personnalisé et votre fichier de minuteur dans le répertoire de services de votre Systemd :
Rechargez la configuration actuelle du démon init :
Activez à la fois le service et le minuteur que vous avez créés en utilisantsystemctl
:
Vérifiez si vous avez correctement chargé votre nouveau minuteur en exécutant : sudo systemctl status my-new-timer.timer
sur une nouvelle session de terminal. Dans ce cas, vous pouvez voir que mon minuteur est maintenant planifié et préparé pour que le système s’exécute.
Apprendre à planifier des tâches à l’aide des temporisateurs Systemd n’est qu’une partie de la compréhension du fonctionnement de votre machine Linux. Plongez plus profondément dans les rouages de ce merveilleux système d’exploitation en consultant notre article comparatif sur Grub et Systemd-boot.
Crédit photo : Alexandr Podvalny via Unsplash . Toutes les modifications et captures d’écran par Ramces Red.
Laisser un commentaire