A system administrator often needs to run a command repeatedly in a certain periods of time. Often such tasks can be easily completed with simple cron commands. In most of the cases this should work, but the shortest period which you can run cron command is every 1 minute. Believe it or not, in many cases this is too slow.

Dans ce tutoriel, vous apprendrez des techniques de scripting simples pour surveiller ou garder un oeil sur une commande particulière en état de fonctionnement continu similaire à top command (surveiller en continu le processus et l’utilisation de la mémoire) tous les 3 secondes par défaut.
Nous ne cesserons pas de discuter des raisons pour lesquelles vous auriez besoin de lancer des commandes si souvent. J’crois que chacun a ses propres raisons pour cela dans ses emplois quotidiens ou même sur ses ordinateurs portatifs et de bureau.
1. Utilisez la commande watch
Watch est une commande Linux qui vous permet d’exécuter une commande ou un programme périodiquement et d’afficher également l’output sur l’écran. Cela signifie que vous serez en mesure de voir l’output du programme à intervalles réguliers. Par défaut, watch recommence la commande/programme tous les 2 secondes. L’intervalle peut facilement être modifié pour répondre à vos besoins.
Surveiller l’utilisation de la mémoire
“Watch” est extrêmement facile à utiliser, pour le tester, vous pouvez démarrer un terminal Linux maintenant et saisir la commande suivante :
# watch free -m
La commande ci-dessus vérifiera la mémoire libre de votre système et mettra à jour les résultats de la commande free command tous les deux secondes.

Comme visible à partir de l’output ci-dessus, vous avez un en-tête affichant des informations sur (de gauche à droite) l’intervalle d’actualisation, la commande en cours d’exécution et l’heure actuelle. Si vous souhaitez cacher cet en-tête, vous pouvez utiliser l’option -t
.
La question suivante logique est : comment modifier l’intervalle d’exécution ? A cette fin, vous pouvez utiliser l’option -n
, qui spécifie l’intervalle avec lequel la commande sera exécutée. Cet intervalle est spécifié en secondes. Par exemple, si vous souhaitez exécuter votre fichier script.sh
tous les 10 secondes, vous pouvez le faire comme ceci :
# watch -n 10 script.sh
Notez que si vous exécutez la commande comme montré ci-dessus, vous devrez cd
vers le répertoire (apprenez Apprenez 15 exemples de commande cd) où se trouve le script ou spécifier l’chemin complet vers ce script.
D’autres options utiles de la commande watch sont :
-b
– crée un son de bip si la sortie de la commande est non-nulle.-c
– Interprète les séquences de couleur ANSI.-d
– met en évidence les changements dans la sortie de la commande.
Surveiller les utilisateurs connectés, l’uptime et la moyenne de charge
Supposons que vous souhaitez surveiller les utilisateurs connectés, l’uptime du serveur et la sortie de la moyenne de charge en une phase continue toutes les quelques secondes, utilisez la commande suivante :
# watch uptime

Pour quitter la commande, appuyez sur CTRL+C
.
Dans ce cas, la commande 'uptime'
sera exécutée et affichera les résultats mis à jour tous les 2 secondes par défaut.
Surveiller le progrès de la commande de copie.
Dans Linux, lors de la copie de fichiers d’un emplacement à un autre en utilisant la commande cp
, la progression des données n’est pas affichée. Pour voir la progression des données copiées, vous pouvez utiliser la commande watch
avec la commande du -s pour vérifier l’utilisation du disque en temps réel.
# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ & # watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso

Si vous trouvez que le processus ci-dessus est trop compliqué à réaliser, je vous suggère d’utiliser la commande de copie avancée Advance copy command, qui affiche la progression des données lors de la copie.
2. Utilisez la commande sleep
Sleep est souvent utilisé pour déboguer des scripts shell, mais il a également de nombreuses autres utilisations utiles. Par exemple, lorsqu’il est combiné avec les boucles for
ou while
, vous pouvez obtenir des résultats assez impressionnants.
Si vous débutez en script bash, vous pouvez consulter notre guide sur les boucles bash ici.
Dans le cas où c’est la première fois que vous entendez parler de la commande "sleep"
, elle est utilisée pour retarder quelque chose pendant un laps de temps spécifié. Dans les scripts, vous pouvez l’utiliser pour indiquer à votre script d’exécuter la commande 1, d’attendre 10 secondes, puis d’exécuter la commande 2.
Avec les boucles ci-dessus, vous pouvez dire à bash d’exécuter une commande, de dormir pendant N secondes, puis d’exécuter à nouveau la commande.
Ci-dessous, vous pouvez voir des exemples des deux boucles :
Exemple de boucle for
# for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done
La ligne ci-dessus exécutera la commande echo et affichera la date actuelle, un total de 10 fois, avec un intervalle de 5 secondes entre les exécutions.
Voici un exemple de sortie:
This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016 This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016 This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016 This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016 This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016 This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016 This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016 This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016 This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016 This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016
Vous pouvez modifier les commandes echo et date avec vos propres commandes ou scripts et changer l’intervalle de pause selon vos besoins.
Exemple de boucle while
# while true; do echo -n "This is a test of while loop";date ; sleep 5; done
Voici un exemple de sortie:
This is a test of while loopWed Feb 17 20:52:32 EET 2016 This is a test of while loopWed Feb 17 20:52:37 EET 2016 This is a test of while loopWed Feb 17 20:52:42 EET 2016 This is a test of while loopWed Feb 17 20:52:47 EET 2016 This is a test of while loopWed Feb 17 20:52:52 EET 2016 This is a test of while loopWed Feb 17 20:52:57 EET 2016
La commande ci-dessus s’exécutera jusqu’à ce qu’elle soit soit arrêtée ou interrompue par l’utilisateur. Cela peut être utile si vous devez exécuter une commande en arrière-plan et que vous ne voulez pas compter sur cron.
Important: Lors de l’utilisation des méthodes ci-dessus, il est fortement recommandé de définir un intervalle suffisamment long pour permettre à votre commande de se terminer avant la prochaine exécution.
Conclusion
Les exemples de ce tutoriel sont utiles, mais ne sont pas destinés à remplacer complètement l’utilitaire cron. C’est à vous de trouver celui qui fonctionne le mieux pour vous, mais si nous devions séparer l’utilisation des deux techniques, je dirais ceci:
- Utilisez cron lorsque vous avez besoin d’exécuter des commandes périodiquement même après le redémarrage du système.
- Utilisez les méthodes expliquées dans ce tutoriel pour les programmes/scripts destinés à s’exécuter dans la session utilisateur actuelle.
Comme toujours, si vous avez des questions ou des commentaires, n’hésitez pas à les soumettre dans la section des commentaires ci-dessous.
Source:
https://www.tecmint.com/run-repeat-linux-command-every-x-seconds/