Anacron est le cron pour les ordinateurs de bureau et portables.
Anacron ne s'attend pas à ce que le système fonctionne 24h/24 et 7j/7 comme un serveur.
Lorsque vous souhaitez qu'une tâche en arrière-plan soit exécutée automatiquement sur une machine qui ne fonctionne pas 24h/24, 7j/7, vous devez utiliser anacron.
Par exemple, si vous avez un script de sauvegarde programmé tous les jours à 23h00 en tant que tâche cron normale, et si votre ordinateur portable n'est pas levé à 23h00, votre tâche de sauvegarde ne sera pas exécutée.
Cependant, si vous avez la même tâche planifiée dans anacron, vous pouvez être sûr qu'elle sera exécutée une fois l'ordinateur portable redémarré.
Format Anacrontab
Tout comme cron a /etc/crontab, anacron a /etc/anacrontab.
Le fichier /etc/anacrontab contient les travaux anacron mentionnés dans le format suivant.
period delay job-identifier command
Le champ 1 correspond à la période de récurrence : Il s'agit d'une valeur numérique qui spécifie le nombre de jours.
- 1 - tous les jours
- 7 – hebdomadaire
- 30 – mensuel
- N – Il peut s'agir de n'importe quelle valeur numérique. N indique le nombre de jours
Remarque :Vous pouvez également utiliser « @mensuel » pour un travail qui doit être exécuté mensuellement.
Le champ 2 correspond au délai : Ceci indique le retard en minutes. c'est-à-dire X nombre de minutes qu'anacron doit attendre avant d'exécuter le travail après le démarrage de la machine.
Le champ 3 correspond à l'identifiant de l'emploi : Il s'agit du nom du fichier d'horodatage du travail. Il doit être unique pour chaque travail. Celui-ci sera disponible sous forme de fichier sous le répertoire /var/spool/anacron. Ce fichier contiendra une seule ligne indiquant la dernière fois où ce travail a été exécuté.
# ls -1 /var/spool/anacron/ test.daily cron.daily cron.monthly cron.weekly # cat /var/spool/anacron/test.daily 20110507
Le champ 4 est la commande : Commande ou script shell qui doit être exécuté.
Tout comme les scripts shell, les commentaires à l'intérieur du fichier anacrontab commencent par #
Remarque : Pour le format de fichier /etc/crontab, reportez-vous à notre article Linux Crontab :15 exemples de tâches Cron impressionnants.
Exemple d'Anacron
L'exemple suivant exécute le script /home/sathiya/backup.sh une fois tous les 7 jours.
Le jour où la tâche backup.sh est censée être exécutée, si le système est arrêté pour une raison quelconque, anacron exécutera le script backup.sh 15 minutes après le redémarrage du système (sans avoir à attendre 7 jours supplémentaires).
# cat /etc/anacrontab 7 15 test.daily /bin/sh /home/sathiya/backup.sh
START_HOURS_RANGE et RANDOM_DELAY
L'exemple ci-dessus indique que le script backup.sh doit être exécuté tous les jours, avec un délai de 15 minutes. c'est-à-dire lorsque l'ordinateur portable a été démarré, exécuté seulement après 15 minutes.
Que se passe-t-il lorsque l'ordinateur portable ou de bureau n'a pas été arrêté ? Quand le travail est-il exécuté ? Ceci est spécifié par la variable d'environnement START_HOURS_RANGE dans le fichier /etc/anacrontab.
Par défaut, il est défini sur 3-22 dans le fichier. Cela indique la plage horaire de 3 h à 22 h.
# grep START /etc/anacrontab START_HOURS_RANGE=3-22
En plus du délai défini par l'utilisateur spécifié dans le 2e champ du fichier /etc/anacrontab, anacron ajoute également de manière aléatoire x nombre de minutes. Le x est défini par la variable RANDOM_DELAY dans le fichier /etc/anacrontab.
Par défaut, il est défini sur 45 dans le fichier. Cela signifie qu'anacron ajoutera x minutes (choisi au hasard entre 0 et 45), et l'ajoutera au délai défini par l'utilisateur.
# grep RANDOM /etc/anacrontab RANDOM_DELAY=45
Cron contre Anacron
Cron et anacron ont leurs propres avantages et inconvénients. Selon vos besoins, utilisez l'un d'entre eux.
Cron | Anacron |
---|---|
La granularité minimale est d'une minute (c'est-à-dire que les travaux peuvent être programmés pour être exécutés toutes les minutes) | La granularité minimale n'est qu'en jours |
La tâche Cron peut être planifiée par n'importe quel utilisateur normal (si elle n'est pas restreinte par un super utilisateur) | Anacron ne peut être utilisé que par un super utilisateur (mais il existe des solutions de contournement pour le rendre utilisable par un utilisateur normal) |
Cron s'attend à ce que le système fonctionne 24h/24 et 7j/7. Si une tâche est planifiée et que le système est en panne pendant cette période, la tâche n'est pas exécutée. | Anacron ne s'attend pas à ce que le système fonctionne 24 heures sur 24, 7 jours sur 7. Si une tâche est planifiée et que le système est en panne pendant cette période, il démarre les tâches lorsque le système redémarre. |
Idéal pour les serveurs | Idéal pour les ordinateurs de bureau et les ordinateurs portables |
Utilisez cron lorsqu'une tâche doit être exécutée à une heure et une minute particulières | Utilisez anacron lorsqu'une tâche doit être exécutée indépendamment de l'heure et de la minute |