#1 Le 10/08/2010, à 16:16
- ehmicky
[Résolu]Problème avec crontab
Bonjours à tous ,
Je ne comprends pas, crontab a toujours bien marché pour moi, mais là, le crontab suivant :
0 18 * * * echo "test" > /a/a
ne s'exécute pas à 18:00. Je me suis demandé si ça venait des locales, mais elles ont l'air d'être ok, et 0 6 * * * ne fonctionne pas plus.
Autre question : pourquoi zenity ne marche pas avec cron ? Doit-il obligatoirement être associé à un pseudo-terminal ou à un terminal interactif ?
Merci beaucoup !
Dernière modification par ehmicky (Le 06/09/2010, à 15:06)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#2 Le 10/08/2010, à 16:21
- sputnick
Re : [Résolu]Problème avec crontab
Pour zenity, il faut forcer le DISPLAY à utiliser ; cron ne tourne pas avec le même environnement que toi, donc tu doit lui "setter" cette variable. Exemple :
* * * * * DISPLAY=:0 /usr/bin/zenity --info --title title --text "this is a test at $(/bin/date)"
pour /a/a, ça necessite d'avoir les droits root. tu a mis ça en crontab root ? Sinon choisit un autre chemin :
* * * * * echo test > /tmp/test
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 10/08/2010, à 17:12
- ehmicky
Re : [Résolu]Problème avec crontab
Ca marche impeccable pour zenity, sous la forme :
DISPLAY=":0"
* * * * * /usr/bin/zenity --info --text="this is a test"
Par contre, cela ne fonctionne pas sous la forme :
DISPLAY=":0"
SHELL=/bin/bash
* * * * * /script.sh
soit :
$ cat /script.sh
#!/bin/bash
/usr/bin/zenity --info --text="this is a test"
et :
$ ls -l /script.sh
lrwxrwxrwx 1 user user 17 2010-08-10 15:48 script.sh
Pour le deuxième point, ce que je ne comprends pas, c'est que c'est pas un problème de permission, car :
0 18 * * * echo "test" > /a/a
échoue, mais :
0 * * * * echo "test" > /a/a
fonctionne.
Dernière modification par ehmicky (Le 10/08/2010, à 17:13)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#4 Le 10/08/2010, à 17:41
- sputnick
Re : [Résolu]Problème avec crontab
Pour le problème à 18h, est tu sur que ton system est à l'heure ?
Ya de grandes chances que... Non.
regarde la sortie de la commande date et si besoin lance cela :
ntpdate -s fr.pool.ntp.org
pour mettre à l'heure.
Pour le display, tu peut le mettre dans ton script avec un
export DISPLAY=:0
au debut du script après le shebang.
Comme tu voit, ya plusieurs façons de forcer la variable.
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#5 Le 10/08/2010, à 17:51
- ehmicky
Re : [Résolu]Problème avec crontab
Pour DISPLAY, je viens d'essayer avec un "export DISPLAY=:0" dans le script lui-même, et ça ne marche pas.
Par ailleurs la commande lancée par le crontab hérite de l'environnement du crontab, donc même sans le "export DISPLAY=:0", j'ai essayé un :
echo $DISPLAY > /fichier_quelconque
juste avant l'invocation de zenity, et la variable DISPLAY est bien égale à ":0"
Par contre, pour la date, c'est à l'heure, puisque je fais un :
date -s "17:59:55"
à chaque fois pour modifier l'heure si la commande s'éxécute à 18 heures, puis je vérifie par un "date" simple, dont voici l'output (mes locales sont intentionnellement en anglais) :
Tue Aug 10 17:59:56 CEST 2010
Dernière modification par ehmicky (Le 10/08/2010, à 18:00)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#6 Le 06/09/2010, à 07:36
- credenhill
Re : [Résolu]Problème avec crontab
hello
$ ls -l /script.sh lrwxrwxrwx 1 user user 17 2010-08-10 15:48 script.sh
pourquoi script sh est un lien ? que répond
ls -lL /script.sh
tu utilises la commande crontab -e pour modifier ?
Hors ligne
#7 Le 06/09/2010, à 13:26
- Totor
Re : [Résolu]Problème avec crontab
un truc tout bête :
0 * * * * date >> /tmp/testcron.log
puis :
for i in {0..23}
do
date -s "$(printf "%02d:59:55" $i)"
sleep 10
done
cat /tmp/testcron.log
Dernière modification par Totor (Le 06/09/2010, à 13:29)
-- Lucid Lynx --
Hors ligne
#8 Le 06/09/2010, à 15:05
- ehmicky
Re : [Résolu]Problème avec crontab
@credenhill : Je viens de reprendre le "dossier", et je ne sais pas pourquoi mon script était un lien ! En tout cas, je viens de le reessayer sans lien symbolique. J'utilise :
vim /moncrontab
crontab -u root /moncrontab
crontab -l -u root
pour éditer, mettre puis vérifier mon crontab.
@Totor :
Le test marche (j'ai une suite de lignes du style "Mon Sep 6 18:00:01 CEST 2010"), mais à condition que le script indique :
date -s "$(printf "%02d:58:55" $i)"
et non :
date -s "$(printf "%02d:59:55" $i)"
Ce qui me fait penser que cron commence à s'activer une minute avant d'effectuer son action, et que du coup, changer artificiellement la date avec date -s échouait parce que je cherchais à remonter le temps juste 5 secondes avant l'exécution du crontab, alors qu'il faut lui laisser au moins 25 secondes de délai, pour préparer le crontab de la minute qui suit !
Donc au final : en fait rajouter la variable DISPLAY suffit pour inclure zenity dans mon script. Le problème était que le crontab ne s'exécutait pas. Il ne s'exécutait pas, parce qu'un crontab devant être exécuté à un temps t, doit être actif au moins 25 secondes avant !
Ainsi, je faisais toujours :
date -s 17:59:55
ce qui faisait que le crontab de 18:00 était zappé (mais pas éventuellement celui de 18:01 s'il y en avait un). Alors que :
date -s 17:59:30
marche impèc'. (J'ai testé de nombreuses fois !)
Donc, problème résolu ! Merci
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne