Encore et toujours un pb de cron !

Bonsoir à tous,

J’ai de nouveau des misères avec cron (cf mon ancien post ici) : je souhaite démarrer un script “novfm_rec_start” à une heure précise et un autre “novfm_rec_stop” à une autre heure précise.
Or, malgré une relecture attentive de la réponse que l’on m’avait donné à l’époque, plus la consultation de plusieurs tutos sur le net, je me retrouve avec le même pb à savoir que le premier script ne se lance pas tandis que le deuxième, lui, oui ! :017
La question est : pourquoi ?
J’ai beau chercher et retourner le pb dans tout les sens, je ne vois pas où ça cloche !

Et j’aimerai, si possible, resoudre ce ¤#%!@&¤ de pb avant demain matin car c’est demain matin diamanche à 10h que j’aimerai que cron me lance mes petits scripts… :mrgreen:

Voici mon crontab : (pour mes tests de tout à l’heure, c’est donc pour ça qu’il y a 48 19 * * 6 au lieu de 0 10 * * 0)[code]$ crontab -l

m h dom mon dow command

48 19 * * 6 su -l eric -c sh /home/eric/bin/novfm_rec_start
49 19 * * 6 su -l eric -c sh /home/eric/bin/novfm_rec_stop[/code]
cron est bien lancé :$ ps aux |grep cron root 15303 0.0 0.0 19832 1044 ? Ss 19:46 0:00 /usr/sbin/cron eric 15328 0.0 0.0 7236 856 pts/0 S+ 19:49 0:00 grep cron
mon fichier novfm_rec_start :[code]$ cat ~/bin/novfm_rec_start
#! /bin/sh

Ce script permet d’enregistrer la radio NovFM (www.novfm.org)

par l’intermédiaire de VLC.

vlc http://openradio.novfm.org:8000/listen.pls --sout file/ogg:"/home/eric/$(date +’%02y-%02m-%02d_%02H:%02M’)_novfm.ogg"[/code]
mon fichier novfm_rec_stop :[code]$ cat ~/bin/novfm_rec_stop
#! /bin/sh

Ce script permet d’arrêter l’enregistrement automatique

de la radio NovFM (www.novfm.org)

killall vlc[/code]
les droits des deux fichiers :~/bin $ ll total 60 drwx------ 2 eric eric 4096 mai 1 19:05 . drwx------ 70 eric eric 4096 mai 1 19:12 .. -rwxr-xr-x 1 eric eric 292 mai 1 19:05 novfm_rec_start -rwxr-xr-x 1 eric eric 120 mai 1 18:32 novfm_rec_stop
Pour info, mes deux script fonctionnent parfaitement quand ils sont lancés à la main.

Si quelqu’un peut m’ouvrir les yeux svp, parce que là… :blush: (je suis sur que c’est tout bête en plus…)

Merci d’avance,
Eric

Quand ce genre de choses arrive, c’est généralement une histoire de variables d’environnement, qui sont initialisées quand tu te loggues dans une console, mais pas dans cron (voir le résultat de env.

Tentes dans ton premier script de remplacer vlc par /usr/bin/nvlc :

  • Avec /usr/bin, le script saura trouver vlc même si tu n’as pas de PATH.
  • nvlc est une version de vlc en console, ainsi il pourra tourner même si la variable DISPLAY n’est pas définie (et pour un simple enregistrement, tu n’as pas besoin d’une belle fenêtre). Attention, du coup, tu ne le verras pas se lancer. Pour vérifier le bon fonctionnement de ta règle cron, il te faudra soit user de la commande ps(1) pour voir si vlc est lancé, soit vérifier la présence du fichier à la fin.

Enfin, détail utile : par défaut, cron envoie le résultat des commandes lancées par mail. Tu peux les lire avec la commande mail(1) (paquet bsd-mailx, si elle n’est pas déjà installée), mais tu préfèreras sûrement mutt (paquet du même nom), un peu plus intuitif… Les mails de root sont redirigés au premier utilisateur créé par défaut (cf /etc/aliases). C’est donc avec cet utilisateur qu’il faudra lancer mail ou mutt.

Salut kna,

Merci pour ton aide, c’est cool…

J’avais pensé à mettre le chemin complet de vlc (/usr/bin/vlc) mais je ne connaissais pas nvlc !
Et à priori ma lenny non plus :$ /usr/bin/nvlc bash: /usr/bin/nvlc: Aucun fichier ou répertoire de ce type $ apt-cache policy nvlc W: Impossible de trouver le paquet nvlcRien trouvé non plus dans la doc en ligne de vlc (videolan.org/doc/)

[EDIT] :arrow_right: paquet “vlc-nox” ? [/EDIT]

Par contre, ton histoire de DISPLAY est une bonne piste :[code]Message 23:
From eric@pc02.home Sat May 01 19:42:01 2010
Envelope-to: eric@pc02.home
Delivery-date: Sat, 01 May 2010 19:42:01 +0200
From: root@pc02.home (Cron Daemon)
To: eric@pc02.home
Subject: Cron eric@pc02 sh /home/eric/bin/novfm_rec_start
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/eric>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=eric>
Date: Sat, 01 May 2010 19:42:01 +0200

[10-05-01_02H:42] novfm_rec_start
VLC media player 0.8.6h Janus
[00000293] skins2 interface error: Cannot open display
[00000293] skins2 interface error: cannot initialize OSFactory
Error: Unable to initialize gtk, is DISPLAY set properly[/code]
Certes, DISPLAY n’a sûrement pas la bonne valeur :$ echo $DISPLAY :0.0mais quelle valeur doit-on lui donner ?

[quote=“Eric75”]avais pensé à mettre le chemin complet de vlc (/usr/bin/vlc) mais je ne connaissais pas nvlc !
Et à priori ma lenny non plus :[/quote]
En fait, c’est une version en ncurses :

$ cat /usr/bin/nvlc #! /bin/sh exec /usr/bin/vlc -I "ncurses" "$@"
Mais tu ne dois pas l’avoir sur les anciennes versions de vlc (donc pas sur lenny).

Deux solutions donc :

  • soit définir la variable DISPLAY dans ton script. Un simple :

devrait suffir je pense

  • soit utiliser un programme qui n’a pas besoin de X. Par exemple avec mplayer :

(de mémoire, si je te me suis planté je te laisse RTFW et tester)

Les grands esprits se rencontrent, ça me rassure quelque part ! :mrgreen:

J’ai essayé aussi l’option -I :/usr/bin/vlc -I ncurses http://openradio.novfm.org:8000/listen.pls --sout file/ogg:"/home/int13h/$(date +'%02y-%02m-%02d_%02H:%02M')_novfm.ogg"mais j’obtennais une erreur :[quote][10-05-02_00:31] novfm_rec_start
VLC media player 0.8.6h Janus
Error opening terminal: unknown.[/quote]
J’ai donc essayé de changer mon fusil d’épaule… et j’ai regardé vers wget… (pas pensé à mplayer) et là tout de suite, ça marche “arch’ment plus mieux” !
Un simple :wget -q http://openradio.novfm.org:8000 -O "/home/int13h/$(date +'%02y-%02m-%02d_%02H:%02M')_novfm.mp3" et le script se lance sans message d’erreur ! (sans même de mail de cron d’ailleurs !)

:033

Bon… pour ce soir je laisse tout comme c’est : ça marche… donc plus personne ne bouge, ne tousse, ni ne respire !!!
Et j’essayerais lundi avec vlc en définissant la variable DISPLAY, mais aussi avec mplayer pour voir si ça passe car je préfèrerais encoder en ogg…

Un grand merci à toi, kna, pour tes conseils qui m’ont bien guidé !
Je mettrais le résultat de mes essais lundi…

Bonne nuit !

Rien ne t’empêche d’encoder en ogg ensuite avec un 2eme script utilisant mencoder, via cron!
Perso je programme cron via la GUI de KDE, c’est bien plus intuitif!
et pour programmer un enregistrement, j’utilise mythtv …