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 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,

mayo2bain a écrit :

j'ai donc lu la doc

Pas si attentivement que ça wink

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 :


La Doc a écrit :

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

smile 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 tongue 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... hmm

   # 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... smile

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 hmm, 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

mayo2bain a écrit :
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... roll

*/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 smile

Je vais essayer d'être plus clair :

J'ai voulu faire la manip décrite par sonar_zystem ici à savoir :

sonar_zystem a écrit :

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 fichier

cd /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 tongue) 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