Besoin d'aide avec le cron

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Besoin d'aide avec le cron

par cicom » 23 mai 2007, 14:49

Bonjour,
Alors je vais décrire plus amplement ma situation. Je suis sur un server LINUX avec apache installé dessus, mais ce server est mutualisé, je n'ai donc pas accès ni au shell, ni à la commande, ni à autre chose, tout ce que j'ai c'est un Cpannel (v2.6.0 pour ceux qui connaissent) un peu bricolé et pas encore correctement en place (hosteur bosse dessus, on a chaque jour de nouvelles foncitons qui marchent...)
J'ai aussi php 5.2.1 et Perl 5.8.8 (c'est quoi perl?)

Je crois avoir identifié le problème que j'ai actuellement, le cron est routé vers /home/getsu/www/akeron/includes/daily.txt qui contient
#!/bin/bash
set BINPHP=/pathvers/cli/php
set SCRIPT=daily.php
$BINPHP $SCRIPT
et qui contenait précédement
#!/bin/bash
set BINPHP=/pathvers/cli/php
set SCRIPT=/home/getsu/www/akeron/includes/daily.php
$BINPHP $SCRIPT


Dans daily.php j'ai deux grosses fonctions qui s'exécutent et une qui écrit dans un fichier log.
Le cron ne me renvoit plus d'erreur c'est donc qu'il arrive à "trouver" daily.txt mais aucune éxécution n'est inscrite dans le log donc c'est que daily.php ne s'éxécute pas.
Daily.php a été testé tout seul et fonctionne parfaitement, je pense que le problème viendrait éventuellement du script daily.txt qui n'arriverait pas à trouver daily.php...
Je propose comme solution d'arriver à faire loguer les erreurs de ce script dans un autre log mais comment faire? Sinon y a t il moyen d'exectuer ce script (daily.txt) en direct pour voir s'il renvoit des erreurs? (je rappelle que je n'ai pas acès ni au schell ni au ssh)

Merci à tous!

par titerm » 22 mai 2007, 21:39

Déjà, il faudrai savoir si tu es libre d'accéder a la cron comme tu veux ou si tu as demandé que tel script soit exécuter a tel heure.
Si tu es libre, le plus rapide, c'est de mettre un déclanchement toutes les minutes jusqu'a la mise au point du script.

De plus, l'acces a la cron te permettrais de rediriger la sortie comme tu le souhaites.

Donc pour une execution toutes les minutes,
* * * * * /path/vers/ton/script 2>&1 >/path/vers/ton/script.log

Suivant le niveau de ta cron certaine syntaxe fonctionne ou pas, par exemple, pour executer toutes les 5 minutes, si cette syntaxe ne fonctionne pas, le 0,5,10,15,....,55 lui fonctionne toujours
0-59/5 * * * * /path/vers/ton/script 2>&1 >/path/vers/ton/script.log


le 2>&1 redirige l'erreur standard sur la sortie standard. Le but est d'avoir les message d'erreur dans ton fichier de log. Le >/path.../script.log sera ton fichier de log.

Un truc basique pour savoir si ton fichier est executé est de faire un touch /path.vers/unfichierTrace
Si avant execution le fichier n'existe pas et si il existe apres execution, le script est executé.

Si ton script est sous bash (#!/bin/bash sur la permiere ligne) tu peux mettre une trace pour chaque commande, une sorte de debug.

#!/bin/bash
set +x
suite de ton script


Good luck

par Cyrano » 22 mai 2007, 07:25

...le script en lui même ne s'éxécute pas...
Comment faire?...
En mettant des alertes de débuggage avec un echo($variable_xyz); à différents endroits pour vérifier que le déroulement du programme suit bien le chemin prévu : si à un endroit ça ne s'affiche plus, il faut remonter un peu jusqu'à ce que ça s'affiche normalement : le problème sera mieux cerné et plus facile à identifier.

par cicom » 22 mai 2007, 06:55

Bonjour à tous!
Donc j'ai mis en place ce que tu m'as dit, plus aucune erreur, seulement le script en lui même ne s'éxécute pas...
Comment faire?
Merci à tous!

par cicom » 19 mai 2007, 18:41

Merci j'ai fait ce que tu m'as dit, on verra demain matin quel rapport je reçois (ma tâche s'effectue tous les jours à 3H du mat)

par titerm » 19 mai 2007, 18:01

bah un fichier text, avec un chmod 755, mais c'est un exemple, faut adapter suivant l'environnement hein...

par cicom » 19 mai 2007, 14:41

Re,
Arf, c'est pour ça que ça ne marche pas... Les lignes de commade que tu m'as envoyées il faut que je les stock dans un fichier de quelle forme?
Merci à tous!

par titerm » 19 mai 2007, 13:36

Le cron execute un shell, pas un script php.

Il faut que tu fasses un script shell qui lui executera ton script php.
N'oublie pas non plus que l'environnement de la cron n'est pas forcement celui de ton compte et notement au niveau du PATH.

qq chose du genre

Code : Tout sélectionner

#!/bin/bash set BINPHP=/pathvers/cli/php set SCRIPT=/home/getsu/www/akeron/includes/daily.php $BINPHP $SCRIPT

Besoin d'aide avec le cron

par cicom » 19 mai 2007, 08:58

Bonjour à tous!
Voila j'ai finalement pu négocier avec mon hébergeur qui a mis le cron accessible à tous ses membres.
Donc j'ai ajouté mon entrée cron, elle marche, mais le comportoment du script est autrement différent que quand on l'appel depuis un navigateur...
Le rapport cron me donne ça depuis quelques jours
/home/getsu/www/akeron/includes/daily.php: line 1: ?php
: No such file or directory
/home/getsu/www/akeron/includes/daily.php: line 2: syntax error near unexpected token `'scripts.php''
/home/getsu/www/akeron/includes/daily.php: line 2: `include ('scripts.php'); '

voici le script de daily.php
<?php
include ('scripts.php');
include ('fonctions.php');
$debut = temps();
bot();
meteo();
$fin = temps();
$total = $fin - $debut;
$total = substr($total,0,8);
echo 'Page générée en '.$total.' secondes.<br />';
?>
daily.php est en 777 (chmod) et c'est tout. Je voudrais savoir pourquoi j'obtient des messages d'erreur et comment les supprimer, ne vous inquietez pas, j'ai contrôlé, fonctions.php et scripts.php sont bien dans le même dossier...

Merci à tous de votre aide!