3 façons de planifier une tâche/un travail sans cron sous Linux
Le monde de Linux est rempli de choses tellement amusantes et intéressantes, plus nous y entrons, plus nous trouvons de types de choses.
Dans nos efforts pour vous apporter ces petits hacks et astuces qui vous rendent différent des autres, nous avons mis au point ici quelques méthodes alternatives pour planifier un travail sans utiliser l’utilitaire cron dans Linux.
La planification d’un travail/d’une commande sous Linux est un acronyme de cron. Chaque fois que nous avons besoin de planifier un travail, nous appelons la commande cron, mais savez-vous que nous pouvons planifier un travail plus tard sans maïs ? Vous pouvez le faire en utilisant les approches courantes suivantes.
1. Planification des tâches sous Linux à l’aide de la boucle de veille
Exécutez une commande (par exemple, date) toutes les 5 secondes et écrivez la sortie dans un fichier (par exemple, date.txt). Pour réaliser ce scénario, nous devons exécuter le script d’une ligne ci-dessous directement sur l’invite de commande.
$ while true; do date >> date.txt ; sleep 5 ; done &
Anatomie du script d’une ligne ci-dessus :
- while true – Demande au script de s’exécuter alors que la condition est vraie, il agit comme une boucle qui fait fonctionner la commande encore et encore ou dire en boucle.
- do – effectue ce qui suit, c’est-à-dire exécuter une commande ou un ensemble de commandes qui se trouve avant l’instruction do.
- date >> date.txt – Ici, la sortie de la commande date est écrite dans un fichier date.txt. Notez également que nous avons utilisé
>>et non>. >>garantit que le fichier (date.txt) n’est pas écrasé à chaque exécution du script. Il ne fait qu’ajouter les modifications. Alors que>écraser le fichier encore et encore.- sleep 5 – Il demande à l’obus de garder une différence de temps de 5 secondes avant de s’exécuter à nouveau. Notez que le temps ici est toujours mesuré en secondes. Disons que si vous voulez exécuter la commande toutes les 6 minutes, vous devez utiliser (6*60) 360, dans une succession de sommeil.
- done : marque la fin d’une boucle while.
&– Mettez l’ensemble du processus en boucle en arrière-plan.
De même, nous pouvons exécuter n’importe quel script de la même manière. Voici la commande pour appeler un script après un certain intervalle (disons 100 secondes) et le nom du script est script_name.sh.
Il convient également de mentionner que le script ci-dessus doit être exécuté dans le répertoire où se trouve le script à appeler, sinon vous devez fournir un chemin complet (/home/$USER/.../script_name.sh).
La syntaxe d’appel du script à l’intervalle décrit ci-dessus est la suivante :
$ while true; do /bin/sh script_name.sh ; sleep 100 ; done &
Remarque : La ligne ci-dessus ne remplace pas Cron, car l’utilitaire Cron prend en charge tout un tas d’options, en comparaison, et est très flexible et personnalisable.
Cependant, si nous voulons exécuter certains cas de test ou benchmarks d’E/S, la commande unique ci-dessus fera l’affaire.
2. Planifiez des tâches avec des minuteries systemd
Dans la plupart des distributions Linux modernes, Systemd est le système d’initialisation par défaut et il est livré avec une fonctionnalité de minuterie qui peut vous permettre de planifier vos tâches.
Tout d’abord, créez un nouveau fichier d’unité de minuterie systemd avec une extension .timer, comme indiqué.
$ sudo nano /etc/systemd/system/myjob.timer
Ajoutez le contenu suivant au fichier myjob.timer :
[Unit]
Description=My Job Timer
[Timer]
OnCalendar=*-*-* 00:00:00
Replace the OnCalendar value with the desired schedule
[Install]
WantedBy=timers.target
Le champ OnCalendar d’une unité de minuterie systemd vous permet de spécifier la planification de votre tâche à l’aide d’un format spécifique.
- Annuel : annuel ou annuel
- Mensuel : mensuel
- Hebdomadaire : hebdomadaire
- Tous les jours : tous les jours ou minuit
- Horaire : horaire
- Minutes : vous pouvez spécifier une minute spécifique à l’aide du format
* :MM(par exemple,* :15pour chaque 15 minutes) ou une plage spécifique à l’aide de MM-MM (par exemple, 10-30 pour chaque minute de 10 à 30).
Voici quelques exemples pour illustrer le format :
## Run every day at 3:00 AM ##
OnCalendar=*-*-* 03:00:00
## Run every Monday and Friday at 10:00 AM ##
OnCalendar=Mon,Fri *-*-* 10:00:00
## Run every 30 minutes: ##
OnCalendar=*-*-* *:0/30:00
Ensuite, créez un fichier d’unité de service correspondant avec une extension .service dans le même répertoire :
$ sudo nano /etc/systemd/system/myjob.service
Ajoutez le contenu suivant au fichier myjob.service :
[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
Activez et démarrez le minuteur :
$ sudo systemctl enable myjob.timer
sudo systemctl start myjob.timer
Cela planifiera l’exécution de votre tâche en fonction de la minuterie spécifiée.
3. Planification des tâches à l’aide d’Anacron
Anacron est un planificateur de tâches basé sur le temps qui vous permet de planifier des tâches périodiquement sur des systèmes qui ne sont pas toujours sous tension. Il est conçu pour les systèmes qui n’ont peut-être pas d’accès régulier à cron. Si anacron est installé sur votre système, vous pouvez l’utiliser pour planifier votre travail.
S’il n’est pas installé, vous pouvez l’installer à l’aide de votre gestionnaire de paquets.
$ sudo apt install anacron [On Debian, Ubuntu and Mint]
sudo yum install anacron [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/anacron [On Gentoo Linux]
sudo apk add anacron [On Alpine Linux]
sudo pacman -S anacron [On Arch Linux]
sudo zypper install anacron [On OpenSUSE]
Créez un nouveau fichier de configuration (myjob.sh) pour votre tâche dans le répertoire /etc/anacrontab.d/.
$ sudo nano /etc/anacrontab.d/myjob.sh
Dans le fichier de configuration, spécifiez les détails de votre tâche.
Run myjob.sh every day with a delay of 5 minutes
1 5 myjob /path/to/myjob.shLes champs du fichier de configuration ont les significations suivantes :
- Le premier champ est la période pendant laquelle le travail doit être exécuté @daily, @weekly, @monthly ou @yearly.
- Le deuxième champ est le temps en minutes nécessaire pour retarder l’exécution de la tâche après le démarrage du système.
- Le troisième champ est le nom de la tâche, qui sera utilisé pour créer des fichiers journaux.
- Le quatrième champ est la commande ou le script à exécuter.
Désormais, Anacron exécutera automatiquement votre travail selon le calendrier spécifié.
C’est tout pour l’instant, si vous connaissez de tels hacks ou astuces Linux, vous pouvez les partager avec nous via notre section de commentaires, et n’oubliez pas de partager cet article avec vos amis.