Question : Comment exécuter certains scripts shell à des intervalles spécifiques sous Linux à l'aide de la tâche cron ? Fournissez des exemples en utilisant différentes périodes.
Réponse : Crontab peut être utilisé pour planifier un travail qui s'exécute sur certains internes. L'exemple ici montre comment exécuter un script shell backup.sh en utilisant différents intervalles. @daily, .. tags que vous pouvez utiliser dans votre crontab.
1. Exécute une tâche cron toutes les 5 minutes
Le premier champ est pour les minutes. Si vous spécifiez * dans ce champ, il s'exécute toutes les minutes. Si vous spécifiez */5 dans le 1er champ, il s'exécute toutes les 5 minutes comme indiqué ci-dessous.
*/5 * * * * /home/ramesh/backup.sh
Remarque : De la même manière, utilisez */10 toutes les 10 minutes, */15 toutes les 15 minutes, */30 toutes les 30 minutes, etc.
2. Exécuter une tâche cron toutes les 5 heures
Le deuxième champ est pour les heures. Si vous spécifiez * dans ce champ, il s'exécute toutes les heures. Si vous spécifiez */5 dans le 2ème champ, il s'exécute toutes les 5 heures comme indiqué ci-dessous.
0 */5 * * * /home/ramesh/backup.sh
Remarque : De la même manière, utilisez */2 toutes les 2 heures, */3 toutes les 3 heures, */4 toutes les 4 heures, etc.
3. Exécute une tâche toutes les 5 secondes
La tâche Cron ne peut pas être utilisée pour planifier une tâche dans un intervalle de secondes. c'est-à-dire que vous ne pouvez pas programmer une tâche cron pour qu'elle s'exécute toutes les 5 secondes. L'alternative est d'écrire un script shell qui utilise la commande "sleep 5".
Créez un script shell every-5-seconds.sh en utilisant bash while loop comme indiqué ci-dessous.
$ cat every-5-seconds.sh #!/bin/bash while true do /home/ramesh/backup.sh sleep 5 done
Maintenant, exécutez ce script shell en arrière-plan en utilisant nohup comme indiqué ci-dessous. Cela continuera à exécuter le script même après votre déconnexion de votre session. Cela exécutera votre script shell backup.sh toutes les 5 secondes.
$ nohup ./every-5-seconds.sh &
4. Exécuter une tâche tous les 5 jours de la semaine
Cet exemple ne concerne pas la planification "tous les 5 jours". Mais c'est pour programmer "tous les 5 jours de la semaine".
Le 5ème champ est DOW (jour de la semaine). Si vous spécifiez * dans ce champ, il s'exécute tous les jours. Pour une exécution tous les vendredis, spécifiez soit 5 du vendredi dans ce champ.
L'exemple suivant exécute backup.sh tous les vendredis à minuit.
0 0 * * 5 /home/ramesh/backup.sh (or) 0 0 * * Fri /home/ramesh/backup.sh
Vous pouvez choisir le numéro d'utilisateur ou l'acronyme à trois lettres correspondant au jour de la semaine, comme indiqué ci-dessous.
- 0=Dim
- 1=Lun
- 2=Mar
- 3=Mer
- 4=jeu
- 5=Ven
- 6=sam
Remarque : Prenez l'habitude d'utiliser Ven au lieu de 5. Veuillez noter que le nombre commence par 0 (et non par 1) et que 0 correspond à Sun (pas Mon).
5. Exécuter une tâche tous les 5 mois
Il n'y a pas de moyen direct de dire "tous les 5 mois", mais vous devez spécifier les mois spécifiques pendant lesquels vous souhaitez exécuter le travail. Vous souhaiterez probablement exécuter la tâche le 5e mois (mai) et le 10e mois (octobre).
Le quatrième champ est pour les mois. Si vous spécifiez * dans ce champ, il s'exécute tous les mois. Pour exécuter pour le mois spécifique, vous devez spécifier le numéro qui correspond au mois. Par exemple, pour exécuter la tâche en mai et octobre, vous devez spécifier 5,10 (ou) vous pouvez simplement utiliser l'acronyme à 3 lettres du mois et spécifier mai, octobre.
Le troisième champ est pour DOM (Jour du mois). Si vous spécifiez * dans ce champ, il s'exécute tous les jours du mois. Si vous spécifiez 1 ce mois-ci, il s'exécute le 1er du mois.
L'exemple suivant exécute backup.sh deux fois par an. c'est-à-dire le 1er mai à minuit et le 1er octobre à minuit.
0 0 1 5,10 * /home/ramesh/backup.sh (or) 0 0 1 May,Oct * /home/ramesh/backup.sh
Remarque : Ne commettez pas l'erreur de spécifier 5-10 dans le 4e champ, ce qui signifie du 5e mois au 10e mois. Si vous ne voulez que le 5e et le 10e mois, vous devez utiliser une virgule.