Fork me on GitHub

Chronique d'Alain01, le cronTab

201307
Février
  alain01 Divers 5815
Divers

J'avais prévu un article sur le design mais j'ai vu dans les forums que le mot "cron" et "crontab" revenaient assez souvent, et que pour certains, cela n'était pas très clair.

Je vais tenter ici d'éclairer votre lanterne...

"Cron" est un programme ("daemon crond") qui permet à un utilisateur d'exécuter des commandes à des intervalles de temps donnés.
L'utilisateur se basera sur "crontab" pour configurer les tables qui indiqueront :
- le script à lancer
- la date et l'heure de lancement
- la fréquence (récurrence)

Exemple :
Je souhaite faire une copie du dossier /home/alain01/www/dossier-docs vers /home/alain01/sauve/ avec comme nom dossier-docs-annee_mois_jour, chaque vendredi, à 23h15

Pour utiliser crontab, ce qu'il faut :

- Soit un hébergeur qui propose une interface en ligne pour utiliser le cron :
--> ici chez OVH
--> ici chez Infomaniak
--> ici avec une interface CPanel
--> ici avec une interface Plesk
--> Ici avec l'interface de Webmin

- Soit vous avez accès en ssh à votre hébergement ou bien même à votre propre serveur linux et donc vous pourrez utiliser cron en ligne de commande (via ssh)

- Soit vous pouvez utiliser un module existant, XOOPSCARE, qui gère le cron, mais il faudra tout de même que votre hébergement vous autorise à utiliser le cron et connaitre le chemin de l'exécutable cron.

Si c'est avec une interface, c'est assez simple.
Globalement, vous indiquez le chemin du script (shell) que le cron va exécuter et vous programmez la date et l'heure d'exécution, avec possibilité de rendre récurrent cette action.

Exemple de récurrence :
- Tout les jours à 16h00
- Tout les mardi à 8h45
- Tout les 5 du mois

Script shell : sauve_docs

cp -Rp /home/alain01/www/dossier-docs/* /home/alain01/sauve/'date + %F'/.



Crontab en ligne de commande :

crontab -l
La ligne de commande ci-dessus affiche le contenu de la table cron pour l'utilisateur courant

crontab -e
La ligne de commande ci-dessus permet d'éditer le contenu de la table cron pour l'utilisateur courant

Chaque entrée de la table (chaque ligne) correspond à une tâche à exécuter et doit respecter cette notation :
mm hh jj MMM JJJ tâche
où
mm représente les minutes (de 0 à 59)
hh représente l'heure (de 0 à 23)
jj représente le numéro du jour du mois (de 1 à 31)
MMM représente l'abréviation du nom du mois (jan, feb, ...) ou bien le numéro du mois (de 1 à 12)
JJJ représente l'abréviation du nom du jour ou bien le numéro du jour dans la semaine.

Exemple 1
Tous les vendredi à 23h15 :
15 23 * * 5 sauve_docs


Évidemment, je me suis largement inspiré de ma propre expérience et pour la doc de Crontab Wikipedia*/

Note: 0.00 (0 votes) - Noter cet article -

Partager Twitter Partagez cette article sur GG+
Format imprimable Envoyer cet article à un ami
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Admin Frxoops
Inscrit le: 04/03/2011
De: Lot
Contributions: 2837
montuy337513 Posté le: 08/02/2013 00:02  Mis à jour: 08/02/2013 00:02
 Re: Chronique d'Alain01, le cronTab
Ce petit tuto est aussi a lire pour les utilisateurs de serveurs Debian Linux
Xoops accro
Inscrit le: 27/07/2005
De: France
Contributions: 2970
tatane Posté le: 08/02/2013 10:06  Mis à jour: 08/02/2013 10:06
 Re: Chronique d'Alain01, le cronTab
Merci alain pour ce tuto
Régulier
Inscrit le: 04/11/2005
De:
Contributions: 177
pmartina Posté le: 08/02/2013 11:15  Mis à jour: 08/02/2013 11:15
 Re: Chronique d'Alain01, le cronTab
Petite coquille:

les commandes sont :
crontab -l
crontab -e

et non

cron -l
cron -e
Admin Frxoops
Inscrit le: 16/05/2003
De: Rhone-Alpes
Contributions: 4051
alain01 Posté le: 08/02/2013 11:44  Mis à jour: 08/02/2013 11:45
 Re: Chronique d'Alain01, le cronTab
Exact, bien vu, Patrice !
Mais je ne peux plus éditer ma news.
on va demander à un gentil webmaster de le faire...

Merrrrrrkiiiiii !
Team FrXoops
Inscrit le: 07/08/2006
De:
Contributions: 1737
Grom Posté le: 11/02/2013 22:12  Mis à jour: 11/02/2013 22:12
 Re: Chronique d'Alain01, le cronTab
Merci alain pour cette explication. Vraiment au top !
Pour les nouveaux ( et moi meme :) l'exemple d'automation de la copie de dossier est intéressante, quelques autres pourraient l'être également .
Sauvegarde auto d'une Bdd sur le FTP , automatisation de compression dun dossier et/ou d'une sauvegarde de base et d'envoi par mail ( si c'est possible ) et d'autres choses auxquelles je ne pense pas.
Je vais me lancer a faire joujou avec ça .
Bonne journée
Admin Frxoops
Inscrit le: 16/05/2003
De: Rhone-Alpes
Contributions: 4051
alain01 Posté le: 11/02/2013 23:42  Mis à jour: 11/02/2013 23:42
 Re: Chronique d'Alain01, le cronTab
@grom
Evidemment, à vérifier...

Sauvegarde auto d'une Bdd sur le FTP ,
script 1 :

mysqldump -u backup -ppassword --allow-keywords --quote-names --force basename | gzip -9 > basename.sql.gz
ncftpput -u $loginftp -p $passftp -P $portftp -F $hostftp $dossierdistantftp $dossierlocalsql"/"$BASE".tar.gz";

automatisation de compression d'un dossier et/ou d'une sauvegarde de base et d'envoi par mail ( si c'est possible )

script 2 :

tar -czf /home/alain01sauve/archive-'date + %F'.tar.gz /home/alain01/www/docs
uuencode archive.tar.gz | mail -s "sauvegarde par mail $(date)" monmail@free.fr
Team FrXoops
Inscrit le: 07/08/2006
De:
Contributions: 1737
Grom Posté le: 18/03/2014 00:26  Mis à jour: 18/03/2014 00:26
 Re: Chronique d'Alain01, le cronTab
Avec un CPanel, j'ai bien bataillé et obtenu mon resultat tant espéré ! Merci Alain pour avoir lancer les bonnes questions.

Sauvegarder mes bases de données sur mon ftp

.Tout d'abord, a la racine du ftp créer un dossier "sauve" (par exemple. Pas du coté public, bien sur)

.créer à l'interieur un fichier backup.sh
.Editer ce fichier et y inscrire les lignes suivantes en remplacant par vos propres données :

#!/bin/bash
date=`date +"%Y-%m-%d"`;
/usr/bin/mysqldump -u nomutilisateur nomdelabase1 -pmotdepasse|gzip > sauve/nomdelabase1_$date.sql.gz
/usr/bin/mysqldump -u nomutilisateur nomdelabase2 -pmotdepasse|gzip > sauve/nomdelabase2_$date.sql.gz

.codage du cron pour une sauvegarde tous les jours a 7h00
0 7 * * * /bin/sh sauve/backup.sh


Pour une sauvegarde de dossier complet, il faut créer un sous dossier dans le "sauve" correspondant à la sauvegarde recherchée.

Ensuite voici la ligne de cron pour un sauvetage tous les dimanches à 0h00

0 0 * * * cp -Rp public_html/monsite/* sauve/monsite


Chez moi (O2Switch) ca marche nickel !
Toutefois, je ne saurais que trop recommander de faire des sauvegardes de BDD manuelles afin de choisir au mieux les options.

Bon Cron à tous
*/
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

39 Personne(s) en ligne (3 Personne(s) connectée(s) sur Articles) | Utilisateur(s): 0 | Invité(s): 39 | Plus ...