Pour exécuter des scripts ou des commandes automatiquement sur un système Linux, il existe plusieurs méthodes efficaces. Cet article explore en détail comment exécuter un script toutes les secondes sur Linux en utilisant différentes techniques. Nous aborderons des solutions comme l’utilisation de la commande watch
, des boucles dans un script shell, ainsi que le planificateur de tâches cron
.
Utilisation de la commande Watch
La commande watch
est un outil puissant qui permet de répéter l’exécution d’une commande ou d’un script à intervalles réguliers. Par défaut, watch
exécute la commande toutes les 2 secondes, mais cet intervalle peut être modifié. Suivez ces étapes pour l’utiliser :
- Ouvrez un terminal sur votre système Linux.
- Saisissez la commande suivante :
- Ceci exécutera
mon_script.sh
toutes les secondes. Assurez-vous que le script est exécutable ; sinon, donnez-lui les permissions nécessaires avecchmod +x mon_script.sh
.
watch -n 1 ./mon_script.sh
Pour quitter la commande watch
, vous pouvez appuyer sur Ctrl+C
.
Création d’une boucle dans un script Bash
Une autre méthode pour exécuter un script à des intervalles fixes est d’utiliser une boucle dans un script Bash. Voici comment procéder :
- Créez un nouveau fichier de script, par exemple
loop_script.sh
: - Ajoutez le code suivant :
- Enregistrez le fichier et quittez l’éditeur.
- Rendez le script exécutable :
- Exécutez le script :
nano loop_script.sh
#!/bin/bash
while true; do
./mon_script.sh
sleep 1
done
chmod +x loop_script.sh
./loop_script.sh
Cette méthode est simple, mais prenez soin de l’arrêter lorsque vous n’en avez plus besoin avec Ctrl+C
.
Planification avec cron
Pour les tâches récurrentes, l’utilisation de cron
est généralement conseillée, bien que cron
ne permette pas d’exécuter une tâche à la seconde près. Néanmoins, vous pouvez programmer un script à exécuter toutes les minutes, puis gérer l’exécution spécifique dans le script lui-même. Voici comment configurer votre tâche cron :
- Ouvrez le fichier crontab :
- Ajoutez la ligne suivante pour exécuter votre script chaque minute :
- Dans
mon_script.sh
, ajoutez une boucle pour exécuter une tâche toutes les secondes :
crontab -e
* * * * * /chemin/vers/mon_script.sh
#!/bin/bash
for i in {1..60}; do
# Votre commande ou script ici
sleep 1
done
Comment exécuter un script toutes les secondes sous Linux ?
Pour exécuter un script toutes les secondes efficacement, utiliser watch
est la méthode la plus directe et simple. Si vous avez besoin d’une exécution continue, la création d’un script Bash avec une boucle est une excellente alternative. Assurez-vous de bien gérer l’arrêt des scripts en cours d’exécution pour éviter des surcharges système.
FAQ
1. Quelle est la différence entre watch
et cron
?
watch
exécute une commande à un intervalle fixe dans le terminal et affiche la sortie en temps réel. En revanche, cron
est utilisé pour planifier des tâches à des intervalles réguliers sans affichage des résultats à l’écran.
2. Comment savoir si mon script s’exécute correctement ?
Vous pouvez ajouter des lignes de journalisation dans votre script pour enregistrer les sorties ou les erreurs dans un fichier. Par exemple, redirigez les sorties vers un fichier en utilisant ./mon_script.sh >> output.log 2>&1
.
3. Puis-je exécuter un script toutes les secondes sans watch
ou cron
?
Oui, en utilisant un script Bash avec une boucle infinie et des pauses (via sleep
), vous pouvez exécuter une commande ou un script à des intervalles définis sans utiliser ces commandes. Cependant, il vous faudra gérer manuellement l’arrêt de ce script.