Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/10/2015, à 15:17

oliver2004

[Résolu] Mes scripts sh ne se lancent pas avec crontab...

Bonjour à tous,
Je mets en place quelques scripts supers simples de backups automatisés avec crontab mais rien à faire, ils ne se lancent apparemment pas alors que ces scripts fonctionnent lors des tests en ligne de commande...

Exemple de config crontab:

10      8       *       *       *      /scripts/backup_bdd.sh

Ce script est le suivant:

#! /bin/sh
#
#       Backup de la BDD
#
#       On définit le nom du fichier
NOW=$(date +"%Y-%m-%d-%Hh%M")
nom_fichier=base_$NOW.sql
#       On fait un mysqldump
mysqldump -uroot -ppasswd base > ~/db/base_db_backups/$nom_fichier
#       On fait un zip du fichier pour upload
gzip -q9 --rsyncable ~/db/base_db_backups/$nom_fichier

#       On efface les anciens fichiers
find ~/db/base_db_backups/ -type f -mtime +10 -exec rm -f {} \;

exit 0;

En ligne de commande, aucune erreur (il est bien exécutable, les chemins sont donc corrects, la base est donc bien dumpée et ensuite gzippée là où ça va bien).
Lors de chaque modification de crontab, je passe par crontab -e et lorsque je sors du fichier, le crontab se réinstalle sans problème. Ce qui est bizarre c'est que sur ce même crontab je lance des fichiers php qui eux s'exécutent normalement à l'heure voulue...

Pour le crontab j'ai également essayé avec ceci:

10      8       *       *       *      sh /scripts/backup_bdd.sh

Mais rien à faire ça ne marche pas et c'est bien embêtant, je pars en voyage et mes backups ne vont pas se faire...
Une idée? Là, je sèche.

Dernière modification par oliver2004 (Le 04/10/2015, à 07:05)


Bureaux: Ubuntu Serveur Edition 18.04.4 LTS, Kubuntu, Xubuntu sur portables 18.04 LTS ou 20.04 LTS
Déjà 13 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#2 Le 03/10/2015, à 16:34

UbuntOlivier

Re : [Résolu] Mes scripts sh ne se lancent pas avec crontab...

Bonjour

Bête question, mais tu as bien ton répertoire /scripts à la racine de ton dd ? Ce n'est pas /home/user/scripts ou /root/scripts ? Je demande ça pcq ton crontab appelle /scripts/backup_bdd.sh, et qu'il est relativement rare que l'on crée un répertoire à la racine de son dd (mais ce n'est pas interdit !)...

Hors ligne

#3 Le 03/10/2015, à 16:41

gl38

Re : [Résolu] Mes scripts sh ne se lancent pas avec crontab...

Tu as mis plusieurs ~, je me demande s'il ne faudrait pas les remplacer par le nom complet des fichiers.
Cordialement,
Guy

Hors ligne

#4 Le 03/10/2015, à 18:23

jplemoine

Re : [Résolu] Mes scripts sh ne se lancent pas avec crontab...

gl38 a écrit :

Tu as mis plusieurs ~, je me demande s'il ne faudrait pas les remplacer par le nom complet des fichiers.
Cordialement,
Guy

Bien sûr que oui... ~ = répertoire home de l'utilisateur connecté... Si le crontab est lancé par root, ~ = /root de mémoire...

Et donc, les fichiers sont surement dans ce répertoire....

Autre chose, dans le ligne de commande, mets une sortie vers un fichier...

10      8       *       *       *      /scripts/backup_bdd.sh > /var/log/backup_dd.log 2>&1

Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#5 Le 03/10/2015, à 18:25

MicP

Re : [Résolu] Mes scripts sh ne se lancent pas avec crontab...

indiquer le chemin absolu des programmes utilisés, ou bien créer une variable PATH , par exemple :

…
PATH=/usr/local/bin:/usr/bin:/bin
NOW=$(date +"%Y-%m-%d-%Hh%M")
nom_fichier="base_$NOW.sql"
…

ou alors :

…
NOW=$(/bin/date +"%Y-%m-%d-%Hh%M")
nom_fichier="base_$NOW.sql"
…

=======
Pas la peine d'appeler le script avec sh si le shebang (#!/bin/sh) est indiqué et que le script est exécutable (chmod +x nomDuScript.sh)

=======


mysqldump -uroot -ppasswd base > ~/db/base_db_backups/$nom_fichier
#       On fait un zip du fichier pour upload
gzip -q9 --rsyncable ~/db/base_db_backups/$nom_fichier

Si mysql n'a pas créé le fichier, gzip ne trouvera rien à comprésser
=======

…-exec rm -f {} \;…

Fait attention à ce que les fichiers ne soient pas supprimés alors que la sauvegarde s'est mal terminée ou n'a pas pu se faire

Pour tout ça, tu pourrais utiliser le ET et OU binaire utilisant le code d'erreur (voir stdin stderr stdout) de la commande précédente :
commande_1 && commande_2 => Seulement Si commande_1 s'est bien déroulée, commande_2 sera exécutée
commande_1 || commande_2   => Seulement si la commande_1 s'est mal terminée, alors la commande_2 sera exécutée.

=======
Est-ce que le contenu du répertoire /scripts est accessible à l'utilisateur qui a créé le crontab ?

=======
Il y a des gens beaucoup plus calé que moi sur les scripts, la sauvegarde, les crontabs, qui vont sûrement confirmer/infirmer ce que je viens d'écrire,
et qui te proposeront des solution plus "pro".

Dernière modification par MicP (Le 05/10/2015, à 05:45)

Hors ligne

#6 Le 04/10/2015, à 07:04

oliver2004

Re : [Résolu] Mes scripts sh ne se lancent pas avec crontab...

Waaouh, merci à tous pour toutes les interventions.
Le chemin absolu, c'est apparemment ça qui bloquait, j'ai donc changé de ~/ à /home/user/... et ça a tout débloqué, je m'en souviendrai...

Sinon, oui, il faudra que je mette des conditions dans le script, si l'action est exécutée, on continue sinon, non... je le ferai au retour... En attendant, je ne vais pas supprimer les fichiers, je commente en attendant..

Merci à tous, vraiment, c'est super !! smile

Sinon, et pour info, je reviens en France après quelques années et j'ai jeté un oeil s'il y avait une ubuntu party qui calait avec les dates de mon voyage... pas de chance pour cette fois-ci et ça me fait bien de la peine... là où je vis, pas beaucoup d'ubunteros...
Encore merci big_smile, je marque à résolu


Bureaux: Ubuntu Serveur Edition 18.04.4 LTS, Kubuntu, Xubuntu sur portables 18.04 LTS ou 20.04 LTS
Déjà 13 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne