[CRON] script qui ne s'éxecute pas et ne renvoi pas d'output

script qui ne s'éxecute pas et ne renvoi pas d'output [CRON] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 09-10-2003 à 18:34:38    

je suis sur une debian woody.
 
j'ai fait le script suivant :
 

Code :
  1. MAILTO=gregory
  2. checkdate=`date | awk '{print $1}'`
  3. OF=all_databases-$(date +%Y%m%d)
  4. rm -f /var/backups/mysql/$checkdate/*
  5. mysqldump -pl xxxxxx --all-databases | gzip > /var/backups/mysql/$checkdate/$OF.gz


 
(xxxxx = mot de passe)
 
 
celui ci fonctionne parfaitement lorsque je le lance depuis le shell, mais pas depuis cron. De plus je ne reçois aucun mail, comme si il y avait pas d'output (pourtant si il y a une erreur...)
 
mon fichier cron est le suivant :
 

Code :
  1. 15 6 * * * /etc/cron.daily/mysqlbackup


 
 
je ne vois aucune erreur dans syslog (où sont les logs de cron d'ailleurs?)
 
 
 
quelqu'un a une idée?

Reply

Marsh Posté le 09-10-2003 à 18:34:38   

Reply

Marsh Posté le 09-10-2003 à 19:31:34    

ton script est bien executable :??:

Reply

Marsh Posté le 10-10-2003 à 10:46:18    

bah si je tape ./mysqlbackup depuis le shell il se fonctionne.
 
autorisations : -rwxr-xr-x
 
 
 
comprends pô

Reply

Marsh Posté le 10-10-2003 à 11:02:47    

essai de le mettre ds cron.daily ;)


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 11:04:59    

tu veux dire mettre directement le script dans cron.daily?
je vais essayer ça...
 
 
comment on fait?


Message édité par duch le 10-10-2003 à 11:07:05
Reply

Marsh Posté le 10-10-2003 à 11:32:24    

duch a écrit :

tu veux dire mettre directement le script dans cron.daily?
je vais essayer ça...
 
 
comment on fait?

cp mon_cript /etc/cron.daily ;)
 
il y a aussi la methode /etc/cron.d
tu mets un fichier avec cette ligne :

0-55/5 *        * * *   root    if [ -x /etc/is_ppp_alive.sh  ]; then /bin/bash /etc/is_ppp_alive.sh; fi


 
;)


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 11:41:24    

je crois qu'il y a eu comme une confusion.
 
Je ne sais pas pourquoi (la fatigue) mais je n'avais pas compris que tu me disais de copier le fichier mysqlbackup dans le répertoire /etc/cron.daily
 
Je sais pourquoi je n'avais pas compris, il y est déjà :sarcastic: c'est marqué en toute lettre dans mon premier post :
 

Citation :

15 6 * * * /etc/cron.daily/mysqlbackup


 
 
je peux essayer de mettre le chemin en relatif, ça aura le mérite d'être plus court...
 
comme ça ça va? :
 

Code :
  1. 15 6 * * * ./mysqlbackup


 
 
mais ça ne marche pas mieux (je viens d'essayer en le déclenchant à 11:37), tout ce que j'ai dans syslog, c'est ça :
 

Code :
  1. Oct 10 11:37:01 icilalune /USR/SBIN/CRON[3951]: (root) CMD (./mysqlbackup)


Message édité par duch le 10-10-2003 à 11:49:13
Reply

Marsh Posté le 10-10-2003 à 11:44:12    

J'ai oublié de préciser que j'avais une autre tache planifiée, et que celle ci fonctionnait parfaitement
 
pour info, voici l'autre ligne de mon fichier cron :
 

Code :
  1. 0 6 * * * /usr/lib/cgi-bin/awstats/tools/awstats_updateall.pl now


 
la seule différence c'est que ce n'est pas un script que j'ai écris. :(


Message édité par duch le 10-10-2003 à 11:46:22
Reply

Marsh Posté le 10-10-2003 à 11:56:59    

si j'était toi je définirait une variable PATH contenantle path vers mes binaires ou je mettrait le path complet deceux-ci, car cron n'initialise pas PATH


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 10-10-2003 à 12:01:38    

merci pour cette suggestion Dark_Schneider mais à l'origine, j'ai mis le chemin en absolu ('/etc/cron.daily/mysqlbackup') donc je ne pense pas que cela puisse venir de là. Si?

Reply

Marsh Posté le 10-10-2003 à 12:01:38   

Reply

Marsh Posté le 10-10-2003 à 12:04:47    

tu n'as pas compris, look  
 

Code :
  1. MAILTO=gregory
  2. PATH=/usr/bin:/bin:/sbin:/usr/sbin
  3.   checkdate=`date | awk '{print $1}'`
  4.   OF=all_databases-$(date +%Y%m%d)
  5.  
  6.   rm -f /var/backups/mysql/$checkdate/*  
  7.   mysqldump -pl xxxxxx --all-databases | gzip > /var/backups/mysql/$checkdate/$OF.gz


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 10-10-2003 à 12:07:05    

Ah ok, j'ai compris, j'essaie ça...
 
marche pô...
 
et je ne reçois toujours pas de mail d'erreur ou de quoi que ce soit de cron
 
 
comprends pô


Message édité par duch le 10-10-2003 à 12:09:49
Reply

Marsh Posté le 10-10-2003 à 12:19:45    

t as essaye en mettant ds /etc/cron.d le fichier ki va bien comme je t ai dis ??
 
car ta ligne 15 6 * * * ./mysqlbackup elle se trouve ds /etc/cron.d ou ds la crontab ?


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 12:23:14    

j'ai pas essayé en mettant directement dans cron.d
 
la ligne en question se trouve dans la crontab. J'ai fais un fichier dans le dossier /etc/cron.daily (nommé daily.cron, je sais c'est pas très malin) avec toutes mes lignes et je fais ensuite
 
crontab daily.cron
 
 
ce que je ne comprends pas c'est que manifestement il appelle bien mysqlbackup (cf. syslog) mais il ne se passe rien.

Reply

Marsh Posté le 10-10-2003 à 12:50:45    

duch a écrit :

j'ai pas essayé en mettant directement dans cron.d
 
la ligne en question se trouve dans la crontab. J'ai fais un fichier dans le dossier /etc/cron.daily (nommé daily.cron, je sais c'est pas très malin) avec toutes mes lignes et je fais ensuite
 
crontab daily.cron
 
 
ce que je ne comprends pas c'est que manifestement il appelle bien mysqlbackup (cf. syslog) mais il ne se passe rien.

moi c est pareil sur ma debian, je suis oblige de mettre ds /etc/cron.d car ds la crontab ca marche pas et je sais pas pk [:mrbrelle]


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 12:54:57    

ok j'vais essayer ça (un peu plus tard car là j'ai un truc en route)
 
je la mets tel quel la ligne? ou il y a une syntaxe spéciale? (un exemple serait le bienvenu)
 
je vous tiens au courant

Reply

Marsh Posté le 10-10-2003 à 12:57:34    

duch a écrit :

ok j'vais essayer ça (un peu plus tard car là j'ai un truc en route)
 
je la mets tel quel la ligne? ou il y a une syntaxe spéciale? (un exemple serait le bienvenu)
 
je vous tiens au courant

je t ai donne un exemple tout a l heure ;)
 

0-55/5 *        * * *   root    if [ -x /etc/is_ppp_alive.sh  ]; then /bin/bash /etc/is_ppp_alive.sh; fi


 
j ai mis ca ds /etc/cron.d/is_ppp_alive ;)
 
a toi de mettre ce k il fo :D


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 15:57:50    

[question stupide]
comment je redémarre cron après avoir ajouter mon fichier dans cron.d?
[/question stupide]

Reply

Marsh Posté le 10-10-2003 à 15:59:12    

/etc/init.d/cron restart ?


---------------
-~- Libérez Datoune ! -~- Camarade, toi aussi rejoins le FLD pour que la flamme de la Révolution ne s'éteigne pas ! -~- A VENDRE
Reply

Marsh Posté le 10-10-2003 à 16:01:02    

merci
 
heureusement que j'étais en mode "question stupide" :D
 
 
 
heu... je continu dans ce mode
 
j'ai mis un fichier nommé daily.cron dont le contenu est le suivant :
 

Code :
  1. 53 15 * * * /usr/lib/cgi-bin/awstats/tools/awstats_updateall.pl now
  2. 53 15 * * * /etc/cron.daily/mysqlbackup


 
dans le répertoire /etc/cron.d, puis j'ai rémarré cron, et il ne s'est rien passé. Normal docteur?


Message édité par duch le 10-10-2003 à 16:08:52
Reply

Marsh Posté le 10-10-2003 à 16:01:11    

duch a écrit :

[question stupide]
comment je redémarre cron après avoir ajouter mon fichier dans cron.d?
[/question stupide]

pas besoin de le redemarrer ;)


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 16:13:11    

quand je dis qu'il ne s'est rien passé, c'est qu'il n'y aucune mention de cron à cette heure là dans syslog, et les stats du sites n'ont pas été mises à jour (alors que normalement ça ça marche...).

Reply

Marsh Posté le 10-10-2003 à 16:22:56    

bon, je débarque !
 
ton script, il faudrait pas qu'il commence par #!/path/ton_interpreteur, ou alors il faut spécifier sur la ligne d'appel : /path/ton_interpreteur /autre_path/ton_script
 
non ?

Reply

Marsh Posté le 10-10-2003 à 16:25:16    

j'avais oublié de le mettre, mais il commence bien par  
 
#!/bin/sh

Reply

Marsh Posté le 10-10-2003 à 16:26:41    

tant pis, j'aurai essayé :D

Reply

Marsh Posté le 10-10-2003 à 16:33:31    

duch a écrit :

quand je dis qu'il ne s'est rien passé, c'est qu'il n'y aucune mention de cron à cette heure là dans syslog, et les stats du sites n'ont pas été mises à jour (alors que normalement ça ça marche...).

ca marche tjs pas ??


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 16:39:08    

faut aussi preciser l'utilisateur je crois  
 
donc c'est plutot  
53 15 * * * root /etc/cron.daily/mysqlbackup

Reply

Marsh Posté le 10-10-2003 à 16:48:06    

non ça ne marche toujours pas (même en spécifian tl'utilisateur),
 
le pire c'est que j'ai un autre script que j'ai fait que voici :
 

Code :
  1. cd /var/spool/spam/
  2. find -name "out.*" ! -name "*.reported" -exec bash -c 'echo "{} :" >> report.txt && cat {} | grep Subject | head -1 >> report.txt && cat {} | grep 'Content analysis details' >> report.txt && mv {} {}.reported' \;
  3. echo "nombre de spams :" >> report.txt
  4. echo ls out.* | grep -c reported >> report.txt
  5. mail -s "filtre anti-spam" gregory@icilalune.com < report.txt
  6. rm report.txt


 
qui fonctionne parfaitement si je l'ajoute à la crontab.
 
On dirais bien que le problème vient de mysqldump. JE vais essayer de l'appeller directement depuis cron...

Reply

Marsh Posté le 10-10-2003 à 17:09:49    

duch a écrit :

non ça ne marche toujours pas (même en spécifian tl'utilisateur),
 
le pire c'est que j'ai un autre script que j'ai fait que voici :
 

Code :
  1. cd /var/spool/spam/
  2. find -name "out.*" ! -name "*.reported" -exec bash -c 'echo "{} :" >> report.txt && cat {} | grep Subject | head -1 >> report.txt && cat {} | grep 'Content analysis details' >> report.txt && mv {} {}.reported' \;
  3. echo "nombre de spams :" >> report.txt
  4. echo ls out.* | grep -c reported >> report.txt
  5. mail -s "filtre anti-spam" gregory@icilalune.com < report.txt
  6. rm report.txt


 
qui fonctionne parfaitement si je l'ajoute à la crontab.
 
On dirais bien que le problème vient de mysqldump. JE vais essayer de l'appeller directement depuis cron...


t as bien mis un fichier ds /etc/cron.d avec juste la ligne ke je t ai donne ??
 
bizarre car moi y a ke comme ca ke ca marche chez moi [:mrbrelle]


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 17:11:29    

j'ai bien essayé de mettre un fichier dans cron.d mais pas exactement avec la ligne que tu m'as donnée
 
j'ai mis ça :  
 

Code :
  1. 53 15 * * * /usr/lib/cgi-bin/awstats/tools/awstats_updateall.pl now
  2. 53 15 * * * /etc/cron.daily/mysqlbackup


 
en tout cas je viens d'essayer en appelant directement mysqldump depuis la crontab et ça marche :
 

Code :
  1. 02 17 * * * /usr/bin/mysqldump -pl xxxxxxx --all-databases | gzip > /var/backups/mysql/test.gz


Message édité par duch le 10-10-2003 à 17:12:20
Reply

Marsh Posté le 10-10-2003 à 17:15:54    

duch a écrit :

j'ai bien essayé de mettre un fichier dans cron.d mais pas exactement avec la ligne que tu m'as donnée
 
j'ai mis ça :  
 

Code :
  1. 53 15 * * * /usr/lib/cgi-bin/awstats/tools/awstats_updateall.pl now
  2. 53 15 * * * /etc/cron.daily/mysqlbackup


 
en tout cas je viens d'essayer en appelant directement mysqldump depuis la crontab et ça marche :
 
 

Code :
  1. 02 17 * * * /usr/bin/mysqldump -pl xxxxxxx --all-databases | gzip > /var/backups/mysql/test.gz




donc aye ca marche ?
 
cool :)


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 17:16:28    

je sais po si tu peux mettre 2 lignes comme ca ds cron.d ;)


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 18:03:36    

bon ben on verra la semaine prochaine...

Reply

Marsh Posté le 10-10-2003 à 18:05:14    

duch a écrit :

bon ben on verra la semaine prochaine...

heu c est tous les jours k ils sont lances tes scripts la ;)


---------------
:: Light is Right ::
Reply

Marsh Posté le 10-10-2003 à 18:49:00    

dernière fois
 

Code :
  1. MAILTO=gregory
  2. PATH=/usr/bin:/bin:/sbin:/usr/sbin
  3.   checkdate=`/bin/date | /bin/awk '{print $1}'`
  4.   OF=all_databases-$(/bin/date +%Y%m%d)
  5.  
  6.   /bin/rm -f /var/backups/mysql/$checkdate/*  
  7.   /usr/bin/mysqldump -pl xxxxxx --all-databases | /usr/bin/gzip > /var/backups/mysql/$checkdate/$OF.gz


 
je pars du fait quez mysqldump se trouve dans /usr/bin. adapter selon la situation


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 10-10-2003 à 18:49:54    

si ct un pb de script, il aurai un mail de cron ;)


---------------
:: Light is Right ::
Reply

Marsh Posté le 14-10-2003 à 11:40:37    

Dark_Schneider >
 
j'ai essayé ta méthode, sans succès :(
 
 
tomate77 > ta méthode non plus ne fonctionne pas, j'ai essayé de mettre un fichier avec une seule ligne dans le répertoire /etc/cron.d dont le contenu est le suivant :
 
40 11 * * * /usr/lib/cgi-bin/awstats/tools/awstats_updateall.pl now
 
(et ça normalement ça marche avec la crontab)
 
et il ne le lance pas :(


Message édité par duch le 14-10-2003 à 11:52:57
Reply

Marsh Posté le 14-10-2003 à 11:52:33    

mais il y a pire...
 
j'avais fait il y a quelque temps le script suivant (que je n'utilise plus maintenant):
 

Code :
  1. cd /var/spool/spam/
  2. find -name "out.*" ! -name "*.reported" -exec bash -c 'echo "{} :" >> report.txt && cat {} | grep Subject | head -1 >> report.txt && cat {} | grep 'Content analysis details' >> report.txt && mv {} {}.reported' \;
  3. echo "nombre de spams :" >> report.txt
  4. echo ls out.* | grep -c reported >> report.txt
  5. mail -s "filtre anti-spam" gregory@icilalune.com < report.txt
  6. rm report.txt


 
 
et bien celui-ci (je viens de réessayer), si je l'appelle depuis la crontab, il marche nickel.
 
va comprendre Charles...
 
 
Je suis maintenant persuadé, qu'il ne s'agit pas d'un problème de path, ni d'un bug dans la gestion de la crontab, mais d'un problème lors de l'appel de mysqldump.
 
problème, si j'appelle mysqldump directement depuis la crontab, il marche. Quelqu'un comprends quelque chose là?


Message édité par duch le 14-10-2003 à 12:01:16
Reply

Marsh Posté le 14-10-2003 à 12:21:46    

essaie en enlevantle truc avec les dates, juste le mysqldump .... |  gzip ...


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 14-10-2003 à 12:29:38    

J'AI TROUVE!!!!!
 
désolé pour le crie de joie.
 
c'est une idée que j'avais eu, mais ça me paraissait trop débile pour être ça.
 
 
Le problème c'est que qd j'utilise la commande "date" dans cron ça renvoie une date au format anglais et avec la première lettre en majuscule, alors que qd j'éxecute le script dans le shell ça me renvoie une date française, donc il ne pouvait pas écrire dans le répertoire correspondant (lun|mar|mer|jeu|ven|sam|dim).
 
 
Ce qui m'amène à d'autres questions :  
 
- pourquoi le format de date dans cron n'est pas le même
- si on ne peut pas le régler, comment forcer le format renvoyé par date.
- bordel de merde pourquoi cron ne renvoit-il pas de mail d'erreur?


Message édité par duch le 14-10-2003 à 12:32:23
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed