Ainsi cron cron cron, les petites marionnettes

Publié dans Geekeries | Marqué avec , , , , , ,
Share

ça cron ?
Voilà 3 mois que j’ai écris un billet intitulé avec autant de mauvais goût que celui que vous êtes en train de lire : ça cron ! Mise à part leur entrée en matière un peu capillotractée, ces 2 billets abordent le même sujet : les crons.
Cron, c’est un système sous Linux qui permet de déclencher un événement à intervalle régulier. Par exemple on peut exécuter tous les jours un script PHP qui nettoie une base de données, ou une ligne de commande Shell qui ouvre un lecteur audio et joue un titre au hasard. Bref, c’est un outils permettant de faire pas mal de choses intéressantes et qui font un peu rêver. Comme je l’expliquais précédemment, j’ai trouvé mon bonheur pour apprendre à utiliser cron sur le site Code18 : Installer un cronjob, mais à l’époque, je n’avais pas eu le temps de tester. Aujourd’hui, c’est chose faites ! Ce petit billet a donc pour but de retracer les grands étapes d’utilisation d’un cron.

Ce dont on a besoin

Tout simplement : un serveur accessible en ligne de commande sur lequel cron est installé.
Pour vérifier si cron est utilisable, il faut utiliser la ligne de commande qui liste les événements programmés :

crontab -l

Si cron est utilisable la liste des événements programmés s’affichera, ou s’il n’y en a pas, un message du style : no crontab for ******.

Dans le cas contraire : -bash: /usr/bin/crontab: Permission denied ou -bash: crontab: command not found.

Pour tout cela, il faut bien sûr se connecter auparavant au serveur en SSH :

ssh user@serveur

Ajouter ou modifier un événement

Il faut utiliser la ligne de commande :

crontab -e

Celle-ci ouvrira le fichier crontab (contenant les événements programmés) sous l’éditeur par défaut, vim par exemple.

Pour ma part, sachant que je suis chez 1and1, ce fichier contient :

# m h  dom mon dow
  command * * * * * /usr/local/bin/php /kunden/***/htdocs/sites

infinite loop (l’auteur de Code18) explique ce que signifie cette ligne de commande. Pour résumer on peut remplacer chaque étoile par les valeurs suivantes (l’étoile signifiant « toutes les minutes|heures ») :

  • 0-59 ou * -> minute
  • 0-23 ou * -> heure
  • 0-31 ou * -> jour du mois
  • 0-12 ou noms ou * -> mois
  • 0-7 ou noms ou * -> jour de semaine

Pour ma part, j’ai remplie le deuxième argument (/usr/local/bin/php) en utilisant : which php sur mon serveur 1&1.
Et le dernier (/kunden/***/htdocs/sites) en utilisant simplement pwd dans un de mes répertoires nommé « sites/ ».

Quelques idées d’utilisation

Pour ma part les cron risquent de bien me servir pour mettre à jour une base de données à partir de flux RSS sans ralentir mon site durant la journée. Cet été, cela m’aurait bien servi pour mettre à jour le cache ou les sitemaps mais bon trop tard.
La question que je me pose, c’est si cela vaut le coup de faire un site proposant un service pour programmer l’envoi d’e-mails en différé. Fonction utile, non disponible sous Gmail par exemple, et à ma connaissance peu utilisé sous Outlook ou autre. A voir…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *