#1 Le 20/10/2011, à 08:55
- mayo2bain
[Résolu] crontab ne fonctionne pas
Bonjour,
je souhaite automatiser une tache, j'ai donc lu la doc, ce qui m'a amené à :
- crée un script (testé il semble fonctionner),
- ajouter une ligne dans un fichier crontab (facile, ca pose pas de souci)
Mon probleme : je bute sur l'enregistrement du fichier crontab. je l'ouvre, comme indiqué dans la doc dans un terminal avec sudo crontab -e, j'ajoute une ligne, et je fais CTRL+O pour sauvegarder (sous nano), mais là il m'indique un chemin de fichier vers /tmp.
Du coup, une fois enregistré la modif n'est pas prise en compte, la tache ne tourne pas en tout cas. quand je fais sudo crontab -l ou crontab -l il me dit que ce fichier n'existe pas.
J'ai essayé de sauvegarder en modifiant le chemin du fichier (en l'enregistrant, comme l'indique la doc dans /var/spool/cron/crontabs/<user>, mais meme en root il me dit "erreur"
Voilà, j'ai beau cherché, mais je n'y connais rien en informatique, alors je tatonne depuis déjà un moment.
Comment faire pour sauvegarder ce maudit fichier et que cron automatise ma tache ????
Merci
Dernière modification par mayo2bain (Le 23/10/2011, à 18:41)
Si microsoft inventait quelque chose qui ne plante pas, ce serait un clou.
Hors ligne
#2 Le 21/10/2011, à 18:39
- jilucorg
Re : [Résolu] crontab ne fonctionne pas
Salut,
j'ai donc lu la doc
Pas si attentivement que ça
je bute sur l'enregistrement du fichier crontab. je l'ouvre, comme indiqué dans la doc dans un terminal avec sudo crontab -e
Moi si je regarde la Doc, je lis ceci :
Commande pour Cron
Pour regarder le contenu de votre crontab, tapez :
crontab -l
Pour éditer le fichier de votre crontab, tapez :
crontab -e
Il n'y a pas écrit
sudo crontab -e
Et c'est bien normal : tu veux faire travailler cron pour toi-utilisateur, pas pour toi-administrateur, tu veux donc créer une crontab /var/spool/cron/crontabs/<user> (= <ton identifiant>), pas <superuser> ! Outre que – comme ici – ça ne marche pas, il est TRÈS mal d'utiliser 'sudo' sans être absolument sûr de ce qu'on fait, cela peut aboutir à des catastrophes, je te dis ça pour la suite de tes aventures...
Le fait que nano ouvre un fichier dans /tmp est le comportement normal. Utilise exactement la méthode de la doc, et tout ira bien.
jiluc.
––
Pour soutenir concrètement le logiciel libre : l'April ! http://www.april.org
Hors ligne
#3 Le 21/10/2011, à 22:55
- mayo2bain
Re : [Résolu] crontab ne fonctionne pas
Merci pour ton aide jilucorg.
Bon ca y est j'ai réussit à enregistrer.
Mais le script ne se lance toujours pas.
je l'ai testé manuellement il fonctionne.
Une idée? que te faut il comme info pour m'aider??
Si microsoft inventait quelque chose qui ne plante pas, ce serait un clou.
Hors ligne
#4 Le 22/10/2011, à 15:59
- jilucorg
Re : [Résolu] crontab ne fonctionne pas
Tu peux faire des tests :
# d'abord voir si cron tourne
sudo restart cron
→ si tout va bien, tu dois voir une sortie
cron start/running, process 12345
sinon, ben, faudra voir...
# si cron marche, à la fin de ta ligne de commande de crontab (là où tu indiques le chemin du script) tu laisses un espace et tu ajoutes
2>/home/<user>/cron.log
ce qui – si cron tente bien d'exécuter le script – dirigera la sortie d'erreur dans ce fichier → si tu n'en comprends pas le contenu, publie-le ici.
# si tu ne vois pas apparaître ce fichier cron.log et que le script ne s'est pas exécuté, il faudrait que tu mettes dans ta crontab un truc qui doit marcher, en faisant tout pareil exactement comme tu fais pour ton script : par exemple, tu crées un script bash contenant quelque chose comme
touch /home/<user>/mon_test_cron 2>/home/<user>/cron.log
, tu vérifies qu'il fonctionne "à la main" (création de deux fichiers), tu effaces les deux fichiers créés et tu le mets dans ta crontab pour quelques minutes plus tard.
→ Si ça ne marche pas, voir la sortie d'erreur dans le 'cron.log'
→ Si ça marche, c'est que ton script ou la façon de le lancer pose problème à cron.
Sans voir le script c'est dur de dire quelque chose (tu peux modifier ce qui serait trop personnel, mettre 'user' au lieu de ton identifiant, ce genre...). Il faut aussi pouvoir lire :
1°) ce que tu as écrit dans la crontab
2°) la commande console exacte avec laquelle ça marche (même remarque). Pas du tout sûr que je trouve, mais quelqu'un d'autre plus pointu peut -être...
Tout ça en copiés-collés pour être sûr de la syntaxe, à mettre ici entre les balises code (l'icône avec les <> bleus)
jiluc.
––
Pour soutenir concrètement le logiciel libre : l'April ! http://www.april.org
Hors ligne
#5 Le 23/10/2011, à 13:14
- mayo2bain
Re : [Résolu] crontab ne fonctionne pas
Alors crontab fonctionne puisqu'il me renvoie :
cron start/running, process 12359
Dans le fichier cron.log crée pour avoir la liste des erreurs je trouve :
giblib error: Can't open X display. It *is* running, yeah?
Evidemment j'ai aucune idée de ce que ca veut dire , un probleme graphique visiblement ? ca m'interesse de savoir en tout cas.
Dans le fichier crontab j'ai écrit la ligne suivante :
*/2 * * * * /home/user/.test/capture.sh 2>/home/user/cron.log
Et le dans le script exécuté il y a ceci que j'ai trouvé en parcourant le forum :
scrot '%d-%m-%Y@%H-%M-%s_$wx$h_scrot.png' -e 'mv $f ~/.test/'
Dernière modification par mayo2bain (Le 23/10/2011, à 18:42)
Si microsoft inventait quelque chose qui ne plante pas, ce serait un clou.
Hors ligne
#6 Le 23/10/2011, à 13:47
- jilucorg
Re : [Résolu] crontab ne fonctionne pas
giblib error: Can't open X display. It *is* running, yeah?
Il y a des erreurs de ce type avec scrot. Dans ce cas un remède qui peut marcher est de faire précéder l'appel de scrot par
DISPLAY=:0
mais comme j'ignore totalement si ton script appelle scrot, tout ça est pure devinette...
*/2 * * * * /home/aurelien/.test/capture.sh 2>/home/aurelien/cron.log
Vraiment c'est impossible de te répondre si tu ne dis à ce point rien de ce que fait ton script 'capture.sh' (?) lancé par cron, quels exécutables il utilise avec quelle syntaxe etc. Je t'avais demandé de faire des choses étape par étape pour essayer d'y voir un peu plus clair, et en te fournissant la syntaxe, tu n'as pas souhaité le faire, dommage, on aurait pu voir le comportement de ton cron. Là on ne sait même pas si tu peux lui faire exécuter un truc élémentaire, on est totalement à l'aveuglette.
Et le dans le script exécuté il y a ceci que j'ai trouvé en parcourant le forum :
Je ne comprends littéralement pas ce que signifie « dans le script exécuté ».
Bonne chance...
Dernière modification par jilucorg (Le 23/10/2011, à 13:48)
jiluc.
––
Pour soutenir concrètement le logiciel libre : l'April ! http://www.april.org
Hors ligne
#7 Le 23/10/2011, à 14:36
- mayo2bain
Re : [Résolu] crontab ne fonctionne pas
Désolé, j'ai du mal à exprimé ce que je fais vu que je suis novice, je pensais que mon message était clair mais apparemment ca n'est pas le cas, mais merci de ton indulgence
Je vais essayer d'être plus clair :
J'ai voulu faire la manip décrite par sonar_zystem ici à savoir :
installe gnome-schedule et scrot
sudo apt-get install gnome-schedule scrot
Ensuite ouvre gedit
gedit /home/ton_nom/.gnome2/nautilus-scripts/capture.sh
..copie et colle ce-ci
scrot '%d-%m-%Y@%H-%M-%S_$wx$h_scrot.png' -e 'mv $f ~/Images/'
(%jour-%mois-%année à %heure-%minutes-%secondes)
dans affichage sélectionne le mode de coloration .sh et enregistre, donnes les droits sur le fichiercd /home/ton_nom/.gnome2/nautilus-scripts/ chmod +x capture.sh
Ouvre gnome-schedule et crée une nouvelle tâche, rentre ce-ci dans le champ "commande"
/home/ton_nom/.gnome2/nautilus-scripts/capture.sh
Puis planifie comme tu veux.
Comme ça tu sais exactement ce que j'ai fais à l'origine. Je sais tu vas dire que c'est pas du tout ce que j'ai écrit dans mon premier post (et tu as tout a fait raison ) mais bon, j'ai tellement tripatouillé avant d'appeler à l'aide que pour moi ce devient confus.
Voilà, sinon la seule différence est que j'ai ajouté la ligne suivante à crontab directement via le terminal en faisant crontab -e et non pas avec le planificateur de tache :
*/2 * * * * /home/user/.test/capture.sh 2>/home/user/cron.log
Question : si le probleme vient bien de scrot, ou dois je placé ceci exactement ?
DISPLAY=:0
EDIT :
Ca y est ca marche !
merci 1000 fois pour ton aide, tout était ok il manquait simplement le "DISPLAY=:0" dans l'appel ! la ligne exact à insérer dans crontab est donc celle ci :
*/1 * * * * DISPLAY=:0 /home/user/.test/capture.sh 2>/home/user/cron.log
Dernière modification par mayo2bain (Le 23/10/2011, à 18:43)
Si microsoft inventait quelque chose qui ne plante pas, ce serait un clou.
Hors ligne