Cron

De Gentoo Linux Wiki.

Sommaire

[modifier] Introduction

Cron est un service qui permet d'exécuter des tâches préprogrammées (scheduled tasks) sur votre ordinateur.


[modifier] En quoi consiste ce HOWTO ?

Ce HOWTO va vous apprendre à utiliser les tâches préprogrammées avec cron en tant que root, basées sur le système de crontabs qui exécute tous les fichiers dans le dossier /etc/cron.d/daily une fois par jour, dans le dossier /etc/cron.d/hourly toutes les heures, etc...

Ce HOWTO ne montre que le moyen le plus facile et le plus simple de pré-programmer des commandes avec cron. Un emploi plus avancé de cron est possible, mais il est assez déroutant pour un débutant de travailler avec crontab, et ce n'est la plupart du temps pas nécessaire.


[modifier] Installation

Gentoo propose trois implémentations de cron. Consultez le Guide d'utilisation de Cron pour faire votre choix.

[modifier] Vixie-cron

La plupart des gens ont installé {Paquet|sys-process/vixie-cron}} à l'installation de leur Gentoo.

Code: Installer vixie-cron
# emerge -av vixie-cron
# rc-update add vixie-cron default

[modifier] Dcron ou fcron

Si pour une raison quelconque vixie-cron ne vous convient pas, vous pouvez opter pour Dcron ou fcron :

Code: Installer Dcron
# emerge -av dcron
# rc-update add dcron default

Ou pour fcron :

Code: installer fcron
# emerge -av fcron
# rc-update add fcron default

Terminez par :

crontab /etc/crontab

(seulement pour Dcron ou fcron)

Attention : La dernière commande va écraser votre crontab actuel si vous en aviez déjà créé avec crontab -e!

[modifier] Ajouter une tâche préprogrammée en root

Dans le répertoire /etc, vous trouverez 4 dossiers par défaut correspondant à différentes fréquences auxquelles cron exécute les commandes. Pour pré-programmer une tâche, placez un fichier avec la commande que vous souhaitez faire exécuter par cron dans le dossier approprié :

  • /etc/cron.daily pour une tâche quotidienne
  • /etc/cron.hourly pour que la commande soit exécutée toutes les heures
  • /etc/cron.monthly pour une tâche mensuelle
  • /etc/cron.weekly pour une tâche hebdomadaire

Admettons que vous vouliez exécuter la commande logwatch.pl quotidiennement. Pour installer logwatch emergez le :

emerge -av logwatch

(sys-apps/logwatch envoie des emails à l'utilisateur root reportant les fichiers log de votre ordinateur, vous permettant ainsi de savoir qui s'est loggé et quand, si vos disques fonctionnent et plus encore). Afin d'exécuter quotidiennement Logwatch, créons un fichier logwatch.cron dans le dossier /etc/cron.daily; Entrez y le nom du programme que vous voulez exécuter (nom complet et chemin d'accès). Si vous ne connaissez pas son chemin, essayez de le trouver avec sys-apps/which comme ceci :

which logwatch.pl
Fichier : /etc/cron.daily/logwatch.cron
#! /bin/sh
/usr/sbin/logwatch.pl

Il ne vous reste maintenant plus qu'a rendre le fichier exécutable :

chmod +x /etc/cron.daily/logwatch.cron

Logwatch envoie désormais tous les jours un email à l'utilisateur root.

Note : Les fichiers que nous avons ajoutés dans /etc/cron.daily ne sont pas des fichiers de configuration, ce sont des scripts en shell exécutés par cron. Nous n'avons ici écrit dans le fichier qu'une simple ligne qui appelle un programme, mais si vous voulez, vous pouvez écrire des scripts plus complexes, appelant plusieurs programmes. Pour avoir quelques exemples, jetez un oeil dans /etc/cron.* .


[modifier] Autres tâches préprogrammées

[modifier] Logrotate

Pour le bien être de vos journaux, vous pouvez installer app-admin/logrotate, un programme qui "tronque" vos journaux lorsqu'ils deviennent trop importants. Si vous n'utilisez pas logrotate, vos journaux deviennent énormes (plusieurs centaines de mégaoctets) et certaines tâches deviennent moins efficaces.

Pas besoin d'être un génie pour installer et activer logrotate :

emerge -av logrotate

Cette commande installe logrotate et ajoute une entrée dans /etc/cron.daily pour que logrotate s'exécute quotidiennement, comme précédemment pour logwatch.

Par défaut, logrotate supprime les journaux âgés de plus de 4 semaines. Si vous voulez conserver vos journaux plus longtemps, commentez la ligne "rotate 4" dans /etc/logrotate.conf. Vous voudrez peut être aussi changer les paramètres de compression de vos anciens journaux; par défaut, il seront compressés. Les changements que vous pourriez vouloir apporter au fichier de configuration de logrotate sont listés ci-dessous :

Fichier : /etc/logrotate.conf
# garder vos journaux plus de 4 semaines
# rotate 4

# décommentez la ligne suivante si vous voulez compresser vos journaux
# compress

[modifier] Webalizer

app-admin/webalizer est un programme qui consulte les journaux de votre serveur web net-www/apache et génère des pages web avec les graphiques représentants le trafic.

Webalizer est un peu plus difficile à installer que logrotate. Tout d'abord, emergez webaliser :

emerge -av webalizer

Le message retourné après l'installation de webalizer est quelque peu erroné : contrairement à ce qui vous est demandé, n'ajoutez rien à votre apache.conf, apache2 aura déjà lu le fichier de configuration de webalizer puisque celui ci se situe dans /etc/apache2/conf/modules.d. Vous aurez cependant besoin de redémarrer apache :

/etc/init.d/apache2 restart

Si vous essayez http://localhost/webalizer, vous ne verrez rien, tout simplement parce qu'aucune statistique n'a été générée pour le moment. Créez un fichier /etc/cron.daily/webalizer.cron (en admettant que vous vouliez mettre à jour vos stats quotidiennement).

Fichier : /etc/cron.daily/webalizer.cron
#! /bin/sh
/usr/bin/webalizer

N'oubliez pas de le rendre exécutable pour que cron puisse l'utiliser :

chmod +x /etc/cron.daily/webalizer.cron

Pour tester ce script, et générer à l'occasion vos premières statistiques, exécutez le. Pour se faire, tapez son nom :

/etc/cron.daily/webalizer.cron

Webalizer vous informera qu'il a bien fait son travail, et vous pouvez dorénavant consulter vos statistiques à l'adresse suivante : http://localhost/webalizer

[modifier] Portage

Certaines personnes préfèrent mettre à jour l'arbre de Portage à la main, alors que d'autres aimeraient bien automatiser ça. Tant mieux pour eux d'ailleurs, puisque ce tutoriel permet d'automatiser des tâches. N'oubliez pas toutefois que la Netiquette Gentoo stipule que vous ne devez pas mettre à jour plus d'une fois par jour. Nous allons donc programmer une tâche hebdomadaire.

Vous devez juste créer un script qui va mettre à jour votre arbre. Créez donc un /etc/cron.weekly/portage.cron :

Fichier : /etc/cron.weekly/portage.cron
#! /bin/sh
exec /usr/bin/nice /usr/bin/emerge --sync


[modifier] Autres tâches

Vous pouvez aussi faire exécuter régulièrement chkrootkit et autres !


[modifier] Liens externes