Problème lancement tâche cron

Bonsoir :006

J’ai mis un script pour sauvegarder mes bases sql!

chemin du script :

/root/script/sauvegarde.sh

ls -l /root/script -rw-r--r-- 1 root root 770 11 mai 23:09 sauvegarde.sh

Lorsque je fais /root/script/sauvegarde.sh (lancé en root) il s’execute normalement et sans aucun soucis, mes sauvegardes sont bien dans le dossier. (si besoin je mets le script)

Les sauvegardes doivent être dans le dossier suivant :

/save/Zai1koi1

ls -l /save drwx------ 2 root root 16384 10 mai 22:12 lost+found drwxr-xr-x 2 root root 4096 11 mai 21:43 sauvegarde drwx------ 2 root root 4096 11 mai 23:08 Zai1koi1

J’ai mis la tache cron :

crontab -l 30 23 * * * root /root/script/sauvegarde.sh > /dev/null 2>&1

A l’heure où le cron doit se lancer j’obtiens ceci :

cat /var/log/cron.log
May 11 23:30:01 ns /USR/SBIN/CRON[6429]: (root) CMD (root /root/script/sauvegarde.sh > /dev/null 2>&1)
May 11 23:30:01 ns /USR/SBIN/CRON[6430]: (root) CMD (/usr/local/rtm/bin/rtm 49 > /dev/null 2> /dev/null)
May 11 23:30:01 ns /USR/SBIN/CRON[6427]: (CRON) error (grandchild #6429 failed with exit status 127)

Et du coup le cron ne se lance pas, aucune sauvegarde… avec ce message d’erreur…
J’ai enlevé “root” dans la tache cron, et j’obtiens une erreur similaire …
Du coup je seche, je ne vois pas d’où vient l’erreur :12

Peut être une erreur de droit sur les dossiers, le fichier executable, mais là je ne vois pas :013

Merci si vous avez une idée :023

Salut,
Déjà, ton script ne devrait pas être dans /root
Place le dans /usr/local/bin, c’est bien plus orthodoxe. Ça suffira peut-être à résoudre le problème…

L’erreur de sortie 127 signifierait:[quote]127: “command not found” illegal_command Possible problem with $PATH or a typo[/quote]
tldp.org/LDP/abs/html/exitcodes.html

Salut,

J’ai déplacé le script dans /usr/local/bin :

root@ns:/usr/local/bin# ls -l total 4 -rwxr-xr-x 1 root staff 770 12 mai 12:55 sauvegarde.sh
mais rien n’y fait toujours le même problème :

May 12 12:58:01 ns /USR/SBIN/CRON[27590]: (root) CMD (/usr/local/rtm/bin/rtm 49 > /dev/null 2> /dev/null) May 12 12:58:01 ns /USR/SBIN/CRON[27591]: (root) CMD (root /usr/local/bin/sauvegarde.sh > /dev/null 2>&1) May 12 12:58:01 ns /USR/SBIN/CRON[27588]: (CRON) error (grandchild #27591 failed with exit status 127)
Ca voudrait dire quoi, qu’il y a un soucis par rapport au chemin dans le script ?

mais pourquoi il n’y aurait pas de soucis en lancement manuel ?! :confused:

Sinon voici le script si ca peut aider :

[code]#!/bin/bash

Initialisation des variables

DATE=$(date “+%Y-%m-%d”)
HEURE=$(date “+%H%M%S”)
REP=/save/Zai1koi1
HOST=localhost
USER=root
PASSWORD=monmdp
DATABASES=mysql --host=${HOST} --user=${USER} --password=${PASSWORD} -e 'SHOW DATABASES' | sed '1,1d' # définition de la liste des bases
#duree de l’historique
KEEP=15

création du répertoire pour les backups du jour

mkdir $REP/$DATE

supprime le repertoire le plus vieux

ls -d $REP/2* | sort | head --lines=-$KEEP | xargs rm -rf

#Boucle de sauvegarde
for i in $DATABASES;
do
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --extended-insert --routines ${i} > ${REP}/${DATE}/${i}.sql
zip ${REP}/${DATE}/${i}-${DATE}.zip ${REP}/${DATE}/${i}.sql
rm ${REP}/${DATE}/${i}.sql
done[/code]

Re,
Tu peux montrer le fichier de cron ?

Voici ce que j’ai quand je fais : crontab -l

[code]# Edit this file to introduce tasks to be run by cron.

Each task to run has to be defined through a single line

indicating with different fields when the task will be run

and what command to run for the task

To define the time you can provide concrete values for

minute (m), hour (h), day of month (dom), month (mon),

and day of week (dow) or use ‘*’ in these fields (for ‘any’).#

Notice that tasks will be started based on the cron’s system

daemon’s notion of time and timezones.

Output of the crontab jobs (including errors) is sent through

email to the user the crontab file belongs to (unless redirected).

For example, you can run a backup of all your user accounts

at 5 a.m every week with:

0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

For more information see the manual pages of crontab(5) and cron(8)

m h dom mon dow command

58 12 * * * root /usr/local/bin/sauvegarde.sh > /dev/null 2>&1
[/code]

Re,
Essaye avec ça (sans root):

sinon

j’avais déjà essayé sans root sans succès mais c’était dans le dossier /root/script

Là sans root ca fonctionne nikel dans ce répertoire :041

Merci à toi c’est génial !

Par contre je ne comprends pas pourquoi ca ne peut pas fonctionner dans /root/script ? qu’est ce qui fait que ca bloque ? :confused:

vu que mes sauvegardes sont dans /save est-ce pareil non orthodoxe ?
Si c’est le cas je pourrais avoir des soucis si je fais un lien symbolique pour le rendre accessible avec apache ?
Par exemple pour ln -s /save/Zai1koi1 /var/www/Zai1koi1 ?

Re,

Je dirais une histoire de “path”.

Content que ce soit réglé! :wink:

Edit: N’oublie pas la coche verte:

C’est ce que j’allais te demander :
donne le résultat de
$PATH (en ‘user’)
il serait étonnant que /root y soit.

Lol a raison pour l’emplacement des scripts-maison :
/usr/local/bin (ou sbin) pour ceux devant être exécuté en tant que root
et
/home/toi/bin (que tu peux créer) pour ceux qui ne demandent à être exécutés qu’en tant qu’ ‘user’ (certains scripts “cool”)

Et pour ceux se trouvant dans /var/www par exemple ? il vaut mieux utiliser root ou un autre utilisateur ?

Je préfére savoir afin de ne pas faire de bêtise :118

Salut,
S’ils sont dans /var/www ils doivent appartenir à www-data (c’est un peu son “/home”…).
Et dans cron, inutile de préciser l’utilisateur, sauf si ce n’est pas www-data qui doit le lancer.

[quote=“lol”]Salut,
S’ils sont dans /var/www ils doivent appartenir à www-data (c’est un peu son “/home”…).
Et dans cron, inutile de préciser l’utilisateur, sauf si ce n’est pas www-data qui doit le lancer.[/quote]

:017 :017 :017

Chez moi, ils appartiennent tous à root, www-data n’étant que le groupe.

ricardo@serveur:~$ ls -al /var/www total 68 drwxr-x--- 12 root www-data 4096 14 juil. 2011 . drwxr-xr-x 14 root root 4096 28 mars 2011 .. -rw-r----- 1 root www-data 1037 24 nov. 2010 404.html drwxr-x--- 3 root www-data 4096 6 août 2011 aviculture drwxr-x--- 3 root www-data 4096 6 août 2011 delires drwxr-x--- 3 root www-data 4096 6 août 2011 etabli

[quote=“ricardo”][quote=“lol”]Salut,
S’ils sont dans /var/www ils doivent appartenir à www-data (c’est un peu son “/home”…).
Et dans cron, inutile de préciser l’utilisateur, sauf si ce n’est pas www-data qui doit le lancer.[/quote]

:017 :017 :017

Chez moi, ils appartiennent tous à root, www-data n’étant que le groupe.[/quote]

Sur une installation fraîche, les fichiers appartiennent TOUS à www-data.
S’ils appartiennent à root chez toi, c’est que tu as fait des modifications…

Je ne suis pas assez sûr de moi pour modifier quoi que ce soit :confused:
C’est installé ainsi sur mon serveur depuis le début (en Lenny), il y a env. 2 ans.
Je viens de vérifier les fichiers, ils sont aussi en root:www-data

Pourtant ces fichiers et dossiers…

…ne sont pas installés d’origine sur une Debian… :005

Pourtant ces fichiers et dossiers…

404.html - aviculture - delires et etabli

…ne sont pas installés d’origine sur une Debian… :005[/quote]
Ah bon !
Merde, moi qui croyais que si :mrgreen:
Me souviens plus.
Tant pis, ça marche, je ne touche pas.

C’est la voix de la raison.
Tant que l’apache ne râle pas, y’a pas de raisons de le chatouiller… :wink: