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 01/11/2012, à 09:39

lagirardiere

[résolu] commande fonctionne dans un terminal pas dans cron

slt
Je n'arrive pas a lancer une commande dans cron qui fonctionne dans un terminal. je veux faire une sauvegarde de ma base MYSQL avec automysqlbackup.
voici la commande qui fonctionne dans un terminal

sudo /usr/sbin/automysqlbackup

dans cron

0 2 * * * sudo /usr/sbin/automysqlbackup

j'ai aussi testé avec un script
script dans /usr/local/bin/savemysql.sh

#!/bin/bash

sudo /usr/sbin/automysqlbackup

exit 0 

là aussi dans un terminal ça fonctionne

sh /usr/local/bin/savemysql.sh

et dans cron

0 2 * * * sh /usr/local/bin/savemysql.sh

je précise que j'ai modifier mon /etc/sudoers pour que la commande sudo /usr/sbin/automysqlbackup se lance sans mdp.

Ou est l'erreur?
Merci d'avance smile

Dernière modification par lagirardiere (Le 02/11/2012, à 09:45)


Portable DELL Inspiron 15R ,Ubuntu 16.4 ,écran 15,6 P ,4 go ram ,CPU intel core I3 ,disque dur 600 go, ATI  Mobility Radeon HD 5000 Series ,carte wifi Broadcom Corporation BCM4313 802.11b/g

Hors ligne

#2 Le 01/11/2012, à 10:02

cracolinux

Re : [résolu] commande fonctionne dans un terminal pas dans cron

Une idée comme ça, tu as fais un script bash que tu lances avec sh.. je sais pas si dans ton cas cela peut conduire à une impasse.
Autre chose, as-tu regardé ça (je pense que oui, mais...) : doc cron (autre considérations)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#3 Le 01/11/2012, à 10:28

grigouille

Re : [résolu] commande fonctionne dans un terminal pas dans cron

Il faut modifier la crontab de root :

sudo crontab -e

et mettre ta commande sans sudo

0 2 * * * /usr/sbin/automysqlbackup

C'est dit dans la doc citée par cracolinux

Dernière modification par grigouille (Le 01/11/2012, à 10:30)


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#4 Le 01/11/2012, à 10:43

Postmortem

Re : [résolu] commande fonctionne dans un terminal pas dans cron

Salut,
@grigouille :
Pas besoin de modifier le crontab root.
@lagirardiere :
Si tu fais un script bash (qui commence par #!/bin/bash), si tu le lances en mettant sh devant, il sera exécuté avec sh et non bash.
Mais je pense pas que ton problème vienne de ça. C'est plutôt un souci de variables d'environnement.
Ta commande fonctionne dans le terminal, c'est bien ça ?
Donc, dans le terminal, où ta commande fonctionne, tape ceci et ajoute la liste des variables au début de ton script :

env | grep -i mysql

Cela va te donner une liste de variables d'environnement liées à mysql. Il faudra les ajouter au début de ton script comme ceci :

#!/bin/bash

export mysql_socket=xxxxxxx
export mysql_turlutu=yyyyyy

sudo /usr/sbin/automysqlbackup

Puis dans ton cron :

0 2 * * * /usr/local/bin/savemysql.sh

Mais ça m'étonne que tu doives utiliser sudo pour une commande mysql. Tu devrais pouvoir ajouter ton user dans le groupe qui va bien pour passer les commandes mysql sans sudo.

Edit :
Tu peux aussi mettre ceci au début de ton script, ainsi nous aurons les éventuels messages d'erreurs dans le fichier /tmp/log_mysql.log :

#!/bin/bash

exec > /tmp/log_mysql.log 2>&1
export mysql_socket=xxxxxxx
export mysql_turlutu=yyyyyy

sudo /usr/sbin/automysqlbackup

Dernière modification par Postmortem (Le 01/11/2012, à 10:54)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#5 Le 01/11/2012, à 12:54

lagirardiere

Re : [résolu] commande fonctionne dans un terminal pas dans cron

merci pour vos réponses
@cracolinux et grigouille
j'ai testé la commande avec cron en root mais pas mieux rien ne se passe.

@Posmortem
oui les commandes fonctionnent dans un terminal
pour la commande env | grep -i mysql
je n'ai aucun retour .
sad


Portable DELL Inspiron 15R ,Ubuntu 16.4 ,écran 15,6 P ,4 go ram ,CPU intel core I3 ,disque dur 600 go, ATI  Mobility Radeon HD 5000 Series ,carte wifi Broadcom Corporation BCM4313 802.11b/g

Hors ligne

#6 Le 01/11/2012, à 13:00

cracolinux

Re : [résolu] commande fonctionne dans un terminal pas dans cron

alors désolé, je crois que je peux pas t'aider la dessus... hmm


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#7 Le 01/11/2012, à 13:09

Postmortem

Re : [résolu] commande fonctionne dans un terminal pas dans cron

Zut !!
Tu as essayé de lancer le script en cron avec la ligne exec > ... histoire de voir s'il y a des messages d'erreur ?


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 01/11/2012, à 13:11

piolet

Re : [résolu] commande fonctionne dans un terminal pas dans cron

bonjour

tu as regardé dans la  log ?
/var/log/cron


lenovo T430 RAM 8Go Xubuntu 22.04 LTS

Hors ligne

#9 Le 01/11/2012, à 13:45

lagirardiere

Re : [résolu] commande fonctionne dans un terminal pas dans cron

@postmortem
oui rien de plus

@ piolet
pas de fichier log /var/log/

sad


Portable DELL Inspiron 15R ,Ubuntu 16.4 ,écran 15,6 P ,4 go ram ,CPU intel core I3 ,disque dur 600 go, ATI  Mobility Radeon HD 5000 Series ,carte wifi Broadcom Corporation BCM4313 802.11b/g

Hors ligne

#10 Le 01/11/2012, à 13:57

Postmortem

Re : [résolu] commande fonctionne dans un terminal pas dans cron

Ça créé le fichier /tmp/log_mysql.log au moins ?
Si non, rajoute une ligne juste sous exec dans le genre de :

echo "Lancement sauvegarde à $(date '+%H:%M')"

Comme ça, on saura au moins si quelque chose se lance.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#11 Le 01/11/2012, à 13:58

lagirardiere

Re : [résolu] commande fonctionne dans un terminal pas dans cron

@postmortem
j'ai supprimer l'envoie de mail par cron après l’exécution d'une tache .
et maintenant la commande tail /tmp/log_mysql.log me renvoi ceci

 exitq> serveur@serveur[xxx.xxx.x.x]:~$

Portable DELL Inspiron 15R ,Ubuntu 16.4 ,écran 15,6 P ,4 go ram ,CPU intel core I3 ,disque dur 600 go, ATI  Mobility Radeon HD 5000 Series ,carte wifi Broadcom Corporation BCM4313 802.11b/g

Hors ligne

#12 Le 01/11/2012, à 14:09

lagirardiere

Re : [résolu] commande fonctionne dans un terminal pas dans cron

je fais le  point
lorsque je lance maintenant la commande sh /usr/local/bin/savemysql.sh avec cron j'ai  en retour dans le fichier log  /tmp/log_mysql.log

-bash: exec: et : non trouvé

et voici mon script savemysql.sh

#!/bin/bash
echo "Lancement sauvegarde à $(date '+%H:%M')"

exec > /tmp/log_mysql.log 2>&1

sudo /usr/sbin/automysqlbackup

exit 0 

Dernière modification par lagirardiere (Le 01/11/2012, à 14:10)


Portable DELL Inspiron 15R ,Ubuntu 16.4 ,écran 15,6 P ,4 go ram ,CPU intel core I3 ,disque dur 600 go, ATI  Mobility Radeon HD 5000 Series ,carte wifi Broadcom Corporation BCM4313 802.11b/g

Hors ligne

#13 Le 01/11/2012, à 14:21

Postmortem

Re : [résolu] commande fonctionne dans un terminal pas dans cron

Il ne faut pas lancer en mettant sh devant !
Fais comme ceci :
Contenu du script /usr/local/bin/savemysql.sh :

#!/bin/bash
exec > /tmp/log_mysql.log 2>&1
echo "Lancement sauvegarde à $(date '+%H:%M:%S')"
sudo /usr/sbin/automysqlbackup
echo "Fin sauvegarde à $(date '+%H:%M:%S')"

Ensuite, on rend le script exécutable par :

chmod 755 /usr/local/bin/savemysql.sh

Puis dans ton cron :

0 2 * * * /usr/local/bin/savemysql.sh

Si tu mets sh devant ton script, il est exécuté en sh et non en bash ; et sh ne connait pas exec alors que bash, si !

Édit :
Ensuite, poste tout le contenu de /tmp/log_mysql.log

Re-edit :
Essaie en mettant ceci dans le script :

#!/bin/bash
exec > /tmp/log_mysql.log 2>&1
. $HOME/.bashrc
echo "Lancement sauvegarde à $(date '+%H:%M:%S')"
sudo /usr/sbin/automysqlbackup
echo "Fin sauvegarde à $(date '+%H:%M:%S')"

La ligne que j'ai ajouté permet d'appeler tes variables d'environnement ; il faut bien l'écrire ainsi :

.<espace>$HOME/.bashrc

Dernière modification par Postmortem (Le 01/11/2012, à 15:20)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#14 Le 02/11/2012, à 09:40

lagirardiere

Re : [résolu] commande fonctionne dans un terminal pas dans cron

slt
Merci Postemortem pour ton aide
J'ai résolu mon probleme je me suis rendu compte que la sauvegarde s’était effectuer ce matin a 6h30 au même moment  qu'une autre tache (pas indispensable d’ailleurs) programmée dans cron ,je l'ai supprimé et relancé mon script savemysql.sh et la tout roule .

Dernière modification par lagirardiere (Le 02/11/2012, à 09:43)


Portable DELL Inspiron 15R ,Ubuntu 16.4 ,écran 15,6 P ,4 go ram ,CPU intel core I3 ,disque dur 600 go, ATI  Mobility Radeon HD 5000 Series ,carte wifi Broadcom Corporation BCM4313 802.11b/g

Hors ligne

#15 Le 02/11/2012, à 23:35

Postmortem

Re : [résolu] commande fonctionne dans un terminal pas dans cron

Salut,
Petite question, par curiosité, quel est le contenu du script qui fonctionne du coup dans ton cron ??


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#16 Le 02/11/2012, à 23:49

lagirardiere

Re : [résolu] commande fonctionne dans un terminal pas dans cron

slt
j'ai mis dans le script savemysql.sh ce que tu m'as indiqué

#!/bin/bash
exec > /tmp/log_mysql.log 2>&1
. $HOME/.bashrc
echo "Lancement sauvegarde à $(date '+%H:%M:%S')"
sudo /usr/sbin/automysqlbackup
echo "Fin sauvegarde à $(date '+%H:%M:%S')"

et merci pour ton aide tongue


Portable DELL Inspiron 15R ,Ubuntu 16.4 ,écran 15,6 P ,4 go ram ,CPU intel core I3 ,disque dur 600 go, ATI  Mobility Radeon HD 5000 Series ,carte wifi Broadcom Corporation BCM4313 802.11b/g

Hors ligne

#17 Le 03/11/2012, à 09:23

Postmortem

Re : [résolu] commande fonctionne dans un terminal pas dans cron

Mais de rien !
Quand un script fonctionne dans le terminal et pas dans cron, c'est souvent une histoire de variables d'environnement.
Après, le truc c'est que les variables d'environnement sont pas forcément toutes initialisées par le .bashrc...
Bon week-end !


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne