Cron sous UNIX
Par yan le dimanche, février 19 2006, 17:16 - Geek - Lien permanent
Le cron sous UNIX sert à automatiser des taches répétitives.
Pour faire un cron il vous faut un environnement UNIX. Cette fonctionnalité est utilisée par les administrateurs système pour automatiser le lancement de tâches (exécutables) de façon régulière. Par exemple les compilations ou les sauvegardes automatiques.
Normalement toute machine UNIX est pourvu par défaut du cron. Pour mandriva c'est le package crontab, pour Ubuntu c'est le package cron.
Commençons par regarder si notre système n'a pas déjà des tâches automatisées grâce à ce système. Tapez : crontab -l
Cette commande liste les cron dejà enregistrées. J'ai le résultat suivant :
[yan@yan-lnx yan]$ crontab -l no crontab for yan
Pour ajouter des entrées dans la crontab (c'est le fichier où sont stockés les commandes) nous devons autoriser notre utilisateur à lancer des cron. Pour cela : créez le fichier /etc/cron.allow et ajoutez votre utilisateur (un utilisateur par ligne). Voici mon fichier :
[yan@yan-lnx yan]$ cat /etc/cron.allow yan [yan@yan-lnx yan]$
Maintenant, il serait intéressant de rajouter une commande à automatiser. Créez un fichier excécutable, par exemple /home/$USER/sauvegarde.sh contenant les lignes suivante :
#!/bin/bash #Ce fichier permet de sauvegarder un répertoire rsync -avz repertoireASauvegarder/ 192.168.1.101::ftp
Rendez ce fichier excécutable : chmod 755 /home/$USER/sauvegarde.sh
Ajoutez l'entrée suivante dans la crontab : 30 13 * * * /home/$USER/sauvegarde.sh en utilisant la commande suivante : crontab -e (e comme edite).
Cella programme votre compilation tous les jours à 13h30.
Vous pouvez trouver la syntaxe complète d'un cron aux adresses suivantes :



Commentaires
Il serait interressant de préciser ce qu'il se passe si à 13h30 l'ordinateur est éteint
C'est tout de même enrichissant de lire des blogs !
Merci pour ce billet
PS : les 2 derniers liens sont inversés par apport à leur url...
Darkagonik, merci d'avoir signalé pour les liens. C'est corrigé.

Kagou, je pense que si le PC est éteint, rien ne se passe.
Pour ce qui est des crons moi j'aime beaucoup utiliser KCron qui je trouve est très simple d'utilisation et évite le caractère un peu ésotérique du crontab.
Enfin il faut se méfier de l'emploi du mot cron. Exemples :
"Tu veux que je sauvegarde ce fichier à la main tous les jours ? Mais tu me prends pour un cron ?" 8-o
Ou encore,
"Oh le cron ! Je l'avais oublié celui là..."
"je pense que si le PC est éteint, rien ne se passe" pas très affirmative cette réponse.
Moi je te donne juste des pistes pour améliorer ton billet
Comme :
puis je lancer une commande 1x par jour au lancement du pc ?
que ce passe t il si le pc est éteint à l'heure de ma commande ?
et existe il une solution ?
Pis tu aurais pu juste un poil expliquer le "30 13 * * *"
Allez de la pédagogie
Kagou, je comprends bien ta remarque. Note juste que ce n'est pas moi qui ai écrit cet article o_O . Je pense que yan se fera un plaisir de préciser tout ça dès qu'il trouvera le temps !!!
Pour ma part je n'utilise pas vraiment ces possibilités...
Pour ce qui est de lancer une commande au démarrage du PC, tu peux créer un script /etc/init.d et t'assurer que ce script est exécuté au démarrage (le mettre dans le /etc/rc.d/) du runlevel correspondant, ou bien le mettre dans ton .xsession ou ton .bashrc, ce qui est un peu plus simple mais moins propre je pense.
Yan c'est ton col-loc sur ce blog ??? :D
Toujours bon de rappeller ce genre de trucs
Kagou, yan est un pote qui est partant pour participer un peu sur ce blog. C'est lui qui m'a fait découvrir le svn entre autres (cf. mon article sur "comment monter un serveur svn et l'utiliser avec eclipse : www.think-underground.com... )
Dans le chmod il manque le g de sauvegarde

Vers la fin commende --> commande
Très bon article, je m'en inspire pour créer un tuto pour nioubs comme moi
Par contre à quoi sert #!/bin/bash dans le script ? Il est commenté, donc est ignoré, quelle est donc son utilité ?
Salut Omnisilver,
Merci, je viens de corriger les typos.
La première ligne n'est pas ignorée même si elle est commentée o_O
Elle sert à préciser quel interpréteur doit être utilisé. Tu peux mettre #!/bin/sh, #!/usr/bin/perl, ... A mon avis si tu lances le fichier depuis une console, le #!/bin/bash ne sert pas à grand chose, mais sinon pour cliquer dessus et le lancer depuis konqueror par exemple, je pense que sans le #!/bin/bash ça marche pas... À tester ^^
Cool, merci pour l'info, je croyais qu'une ligne commentée était forcément ignorée !
Voici le tuto que j'ai réalisé : forum.ubuntu-fr.org/viewt...
Son but premier est d'avoir des retours pour :
1) Rectifier mes erreurs potentielles, et l'améliorer d'une façon plus générale
2) Arriver à obtenir un log de la sauvegarde
Et accessoirement j'apprends beaucoup mieux si j'explique que si je lis "passivement" donc pour intégrer quelque chose, je fais un tuto MDR
Ensuite une fois que j'aurai eu plusieurs retours, je le mettrai sur le planet ou sur le wiki, de façon à le rendre plus visible.
Le but final est d'avoir un tutorial simple, accessible à un débutant sous linux, permettant une automatisation des sauvegardes des profils TB et FX (évidemment on peut sauver tout et n'importe quoi si on a compris le principe). C'est très ciblé je sais
Pour le cron programmé à une heure où l'ordinateur est éteint, j'ai essayé hier soir et rien ne se passe. Il semblerait que je doive me pencher sur anachron pour régler ce problème (mais ce week end parce que j'ai une semaine de folie : soutenance, exposé, devois à rendre et contrôles sur table)
Bref je raconte ma vie, mais est-ce que les initiés du cron (toi jib, mais aussi yan ou d'autres lecteurs qui passeraient par là) pourraient y jeter un oeil pour me dire ce qui va / ne va pas / m'aider à obtenir un log ?
Merci d'avance !
Adrien
Salut Adrien,
Tout d'abord merci d'inclure tes références dans tes articles. Ça fait toujours plaisir.
Sinon j'ai regardé le tuto, il me semble bien. BRAVO ! Si ça marche chez toi c'est bon ^^ J'utilise ni Firefox ni Thunderbird donc je peux pas trop vérifier...
Trois petites remarques :
"remplaçant les X du profils par les 8 chiffres et lettres qui composent son nom." -> c'est pas très clair o_O
Pour ce qui est de ton cron il fait toujours une copie dans le même dossier... Peut-être devrais tu mettre un cp -rf ou bien mieux créer avec un script un dossier du style sauvegarde-date_de_la_sauvegarde.
Et j'ai oublié mon troisième point...
Encore bravo. Je ne suis pas un expert de cron donc je ne peux pas plus t'aider...
I'm back !


Pour le cron qui écrase toujours la même sauvegarde c'est voulu, parce que mes profils pèsent lourd (surtout TB : quelques centaines de méga) donc je ne veux pas saturer mon disque.
Merci quand même pour la suggestion
Je vais rectifier ça pour les X !
Bon WE
Salut Adrien,
Pour ce qui est de la copie de tes profils, si tu n'as pas l'option -rf, je pense que les fichiers qui existent déjà ne sont pas remplacés... ce qui n'est pas ce que tu veux je pense !
Salut Adrien,
rsync est un systemes de sauvegarde qui ne change que les fichiers qui ont été modifiés depuis la dernière sauvegarde.
Pour plus d'information sur rsync : rsync.samba.org/
Yan
Merci pour l'info Yan ! J'édite mon tuto pour le préciser !
mais avec rsync je n'ai plus besoin de cp
Et merci aussi djib
Salut Adrien,
J'ai découvert rsync récemment et j'avoue que je trouve ça très sympathique.
merci pour les infos
Bonjour,
comment permttre à un utilisateur sous unix 4.3 d'ouvrir le crontab.
Merçi
foufa, désolé mais je ne comprends pas ta question.