#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
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
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
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
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...
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#13 Le 17/11/2009, à 08:38
- gigiair
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
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 ) 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
Merci pour votre aide
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...)
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
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
#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 ...
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.
#20 Le 03/05/2018, à 14:49
- JackPote98
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 variableecho $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...)
Bonjour à tous je déterre ce topic car j’ai le même problème. sebOuil comment as tu su que le problème était celui-ci ET comment a tu trouvé cette valeur?
Merci beaucoup
Hors ligne