Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 15/11/2009, à 12:01

Dunatotatos

[Résolu] crontab ne lance pas mon script

Bonjour tout le monde,

J'ai récupéré sur le forum un petit script permettant de choisir aléatoirement un fond d'écran dans un dossier. Je l'ai adapté, et il fonctionne parfaitement quand je le lance dans la console :

sh ~/scripts/randpaper.sh

Je l'ai ajouté dans la crontab :

crontab -e
*/15 * * * * sh ~/scripts/randpaper.sh

Sauf que ça ne fonctionne pas. 11h00 est passé sans changement. J'ai adapté le crontab :

* * * * * sh ~/scripts/randpaper.sh

pour l'activer chaque minute, mais sans plus de succès.

Merci d'avance pour votre aide wink
Duna

Dernière modification par Dunatotatos (Le 17/11/2009, à 21:07)

#2 Le 15/11/2009, à 12:06

gigiair

Re : [Résolu] crontab ne lance pas mon script

crontab ne connaît pas ton environnement,  il faut donner le chemin complet
*/15 * * * * sh /home/<ton home>/scripts/randpaper.sh
Devrait le faire


--
JJR.

Hors ligne

#3 Le 15/11/2009, à 12:35

Dunatotatos

Re : [Résolu] crontab ne lance pas mon script

C'est modifié. Le chemin est correct (je l'ai copier-coller dans un terminal pour vérifier, et le script s'est bien lancé). Mais le changement ne s'effectue toujours pas...

Merci pour ton aide wink

Dernière modification par Dunatotatos (Le 15/11/2009, à 12:35)

#4 Le 15/11/2009, à 13:00

gigiair

Re : [Résolu] crontab ne lance pas mon script

Ça vient peut-être de ton script
Si tu ajoutes cette ligne

*   *   *   *  *  touch /home/<ton nom d_user>/toto

Ça ne marche toujours pas ?
(vérifies avec un ls -l ~/toto que l'heure est bien changée toutes les minutes)


--
JJR.

Hors ligne

#5 Le 15/11/2009, à 13:10

Dunatotatos

Re : [Résolu] crontab ne lance pas mon script

Le touch fonctionne.

Voici mon script, au cas où :

#! /bin/bash
## dependances : randomize-lines
gconftool -t str -s /desktop/gnome/background/picture_filename "`find $HOME/Images/wallpapers -name \*.jpg | rl | tail -n 1`"

#6 Le 15/11/2009, à 13:36

gigiair

Re : [Résolu] crontab ne lance pas mon script

crontab ne s'exécute pas dans le même environnement que ton shell. C'est sans doute ce qui fait que le comportement n'est pas celui qui est attendu.
Ajoutes la ligne de touch à ton script, tu verra qu'il s'exécute bien.
Modifie toutes les variables qui font appel à l'environnement créé par ton .profile ou par ton .bashrc, en particulier les appels de fonction susceptibles d'être masqués par des alias.
Tu peux essayer de récupérer l'environnement de crontab, ou de lire soigneusement la doc de crontab (ce que je n'ai pas fait et pas très envie de faire). Puis tester ton script dans cet environnement.

Dernière modification par gigiair (Le 15/11/2009, à 13:48)


--
JJR.

Hors ligne

#7 Le 15/11/2009, à 14:49

n3o51

Re : [Résolu] crontab ne lance pas mon script

Donne le lien de ton script que l'on regarde !!!
Merci


Welcome to the real world
________________________________

Hors ligne

#8 Le 15/11/2009, à 15:39

Dunatotatos

Re : [Résolu] crontab ne lance pas mon script

n3o51 > J'ai donné mon script juste au-dessus : http://forum.ubuntu-fr.org/viewtopic.php?pid=3069635#p3069635

Sinon, j'ai lu la doc de crontab, mais elle ne m'a pas éclairé sur mon problème.

J'ai testé l'utilisation de su :

#! /bin/bash
## dependances : randomize-lines
su dunatotatos -c "gconftool -t str -s /desktop/gnome/background/picture_filename "`find /home/dunatotatos/Images/wallpapers -name \*.jpg | rl | tail -n 1`""

Quand je le lance dans la console, mon mot de passe est nécessaire (mais autrement, ça fonctionne), alors évidemment, l'ajout dans ma crontab ne m'avance à rien. J'ai tenté en l'ajoutant à la crontab de root, mais ça ne fonctionne pas (pas de changement de fond d'écran).

#9 Le 16/11/2009, à 21:29

Dunatotatos

Re : [Résolu] crontab ne lance pas mon script

J'ai lu le manuel de crontab, de 5 crontab, mais je n'ai strictement rien trouvé pouvant résoudre mon problème...

#10 Le 16/11/2009, à 22:17

n3o51

Re : [Résolu] crontab ne lance pas mon script

ajoute DISPLAY=":0.0" en haut de t'as crontab ctontab -e pour editer  on ne sais jamais


Welcome to the real world
________________________________

Hors ligne

#11 Le 16/11/2009, à 22:53

seb0uil

Re : [Résolu] crontab ne lance pas mon script

n3o51 a écrit :

ajoute DISPLAY=":0.0" en haut de t'as crontab ctontab -e pour editer  on ne sais jamais

Salut,
Qd tu lances un script par cron, il ne connais rien de ton environnement d'execution (pas de PATH, d'alias) et donc pas de DISPLAY non plus. Comme sur Linux, tu peux avoir simultanément plusieurs environnement graphique de lancé, ben, il faut bien lui dire sur lequel tu veux qu'il intervienne (même si il n'y en a qu'un, il faut lui préciser).
donc un DISPLAY=:0.0 comme indiqué par n3o51 ou un export DISPLAY=0.0 devrait faire l'affaire


Java stuff ::
tPortal.. ma petite implémentation de la JSR168
jlibParam.. pooling, paramétrage etc...

Hors ligne

#12 Le 16/11/2009, à 23:17

Hizoka

Re : [Résolu] crontab ne lance pas mon script

essaie avec fcron, ca m'avait fait le coup aussi, ca ne se lancé pas avec cron mais fcron oui...

Hors ligne

#13 Le 17/11/2009, à 08:38

gigiair

Re : [Résolu] crontab ne lance pas mon script

seb0uil a écrit :
n3o51 a écrit :

ajoute DISPLAY=":0.0" en haut de t'as crontab ctontab -e pour editer  on ne sais jamais

Salut,
Qd tu lances un script par cron, il ne connais rien de ton environnement d'execution (pas de PATH, d'alias) et donc pas de DISPLAY non plus. Comme sur Linux, tu peux avoir simultanément plusieurs environnement graphique de lancé, ben, il faut bien lui dire sur lequel tu veux qu'il intervienne (même si il n'y en a qu'un, il faut lui préciser).
donc un DISPLAY=:0.0 comme indiqué par n3o51 ou un export DISPLAY=0.0 devrait faire l'affaire

C'est tout à fait exact. L'environnement créé par cron est très succint.
il suffit d'ajouter une commande à la crontab
* * * * * env > cronenv
cat cronenv permet  ensuite de comparer à l'environnement habituel.
La méthode bourrin consisterait à recopier l'environnement habituel dans le script.

Dernière modification par gigiair (Le 17/11/2009, à 08:39)


--
JJR.

Hors ligne

#14 Le 17/11/2009, à 19:57

Dunatotatos

Re : [Résolu] crontab ne lance pas mon script

J'ai compris vos explications. J'ai donc tenté toutes les manières proposées (DISPLAY=":0.0", export DISPLAY=0.0, situé en haut du script ou haut de la liste de la crontab, j'ai même tenté la méthode bourrin tongue) mais rien n'y fait, ça ne veut pas. J'ai donc ressorti le log de ma commande dans un fichier, le fichier est vide...

J'ai voulu installer fcron, mais quand j'ai lu "désinstallera ubuntu-desktop", j'ai fait marche arrière tongue

Merci pour votre aide big_smile

Dernière modification par Dunatotatos (Le 17/11/2009, à 19:58)

#15 Le 17/11/2009, à 20:37

seb0uil

Re : [Résolu] crontab ne lance pas mon script

je viens de faire l'essai, et effectivement, pour que ca marche gfconftool n'a pas besoin de la variable DISPLAY, mais de DBUS_SESSION_BUS_ADDRESS
pour essayer, dans un terminal, tu recupères la valeur de la variable

echo $DBUS_SESSION_BUS_ADDRESS
unix:abstract=/tmp/dbus-Z1sfkOkDss,guid=4088859f2e5f61d54967fe434b02f5bb

et donc, au debut du script, tu ajoutes l'export qui va bien

#! /bin/bash
## dependances : randomize-lines
export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-Z1sfkOkDss,guid=4088859f2e5f61d54967fe434b02f5bb

seul truc, c'est que cette valeur risque très fortement de changer lorsque tu redémarreras ton pc. Plus qu'a trouver comment mettre cette ligne a jour automatiquement (via sed, ca doit être faisable, mais j'ai plus ca en tête...)


Java stuff ::
tPortal.. ma petite implémentation de la JSR168
jlibParam.. pooling, paramétrage etc...

Hors ligne

#16 Le 17/11/2009, à 20:44

Autiwa

Re : [Résolu] crontab ne lance pas mon script

Ma ligne crontab est :

00 */5 * * * autiwa /home/autiwa/scripts/cron/backup_journalier.sh

Dans celui-ci, je fais des echo"ce que je veux">/home/autiwa/un_fichier_log

histoire de savoir ce qu'il a fait ou non. ça permet de dégrossir les soucis. Vu que ta ligne cron est différente de la mienne, c'est peut-être ça qui pêche. Pour info, j'ajoute ma ligne via :

echo "00 */5 * * * autiwa /home/autiwa/scripts/cron/backup_journalier.sh"|sudo tee -a /etc/crontab

Pensez à éditer le titre du sujet (en éditant le premier message) pour rajouter un "[Résolu]" ça évite à ceux qui veulent donner un coup de main, d'ouvrir un sujet où il n'y a plus d'aide à donner.

Hors ligne

#17 Le 17/11/2009, à 21:06

Dunatotatos

Re : [Résolu] crontab ne lance pas mon script

seb0uil > Parfait, ça fonctionne comme ça big_smile
Merci tout plein.

Autiwa > Je suivais déjà l'évolution avec un fichier log, avec un touch (puis en contrôlant la date de dernière modification), et avec une sortie en 2>&1 de la commande gconftool.

Merci pour votre aide smile

#18 Le 17/11/2009, à 21:57

seb0uil

Re : [Résolu] crontab ne lance pas mon script

Aller, pour finir, pour mettre a jour le script en fonction de la variable, si elle change au démarrage du poste

#! /bin/sh
sed "s#^\(export DBUS_SESSION_BUS_ADDRESS=\).*#\1$DBUS_SESSION_BUS_ADDRESS#" wp.sh > wp_new.sh 
mv wp_new.sh wp.sh 
chmod +x wp.sh

avec, mon script qui s'appelle wp.sh, le sed qui met donc a jour dans un fichier intermédiaire wp_new.sh avant de le renommer, et de ne pas oublier de le rendre executable.

Donc a lancer au démarrage de la session (pour que la variable soit alimentée !) si besoin ...


Java stuff ::
tPortal.. ma petite implémentation de la JSR168
jlibParam.. pooling, paramétrage etc...

Hors ligne

#19 Le 18/11/2009, à 12:12

Dunatotatos

Re : [Résolu] crontab ne lance pas mon script

Ah, cool, celui-ci est un peu plus joli que le mien.

J'ai fait un script lancé au démarrage, mais il recréait le script en entier à chaque fois.
Merci pour celui-ci, je l'adopte, car préféré à ma méthode bourrine.

Haut de page ↑