Page 1 sur 1

[cron]commande date en anglais (résolu)

Publié : ven. 21 mai 2010, 23:50
par LaurentuX
Bonjour à tous,
tout d'abord, je m'autoflagelle, je n'ai pas posté au bon endroit, ben oauis mais j'ai pas trouvé la rubrique avec des couettes !
(adéquate... ouais bon ok).
Voilà, mon soucis est tout con :
1- Je me fait un script qui utilise la commande 'date' pour obtenir le nom du jour réduit, par exemple 'ven.' pour vendredi.
ça marche bien !
2- Je lance ce script à la main, ça marche bien.
3- Je lance ce script par cron, ça marche pu. Je récupère 'Fri.' au lieu de 'ven.'
Bon ok, le cron ne s'éxecute pas avec l'environnement du user dont il dépend, etc, etc
Cron ne se connecte pas donc pas de fichiers de configs de lancés, tout ça, tout ça
4- Dans mon fichier cron (via crontab -e par exemple), je place donc mes variables d'environnement comme il faut :

Code : Tout sélectionner

SHELL=/bin/bash
LANG=fr_FR.utf8
Je redémarre le daemon cron, ça marche, ô joie immense... mais de courte durée.

J'éteins ma machine (de temps à autre je dors).
Je rallume, je ne m'occupe plus de mon script lancé par cron (c'est un peu le but en même temps)
et pan, je m'aperçois que le nom réduit du jour est encore en anglais :pleure:

Pris d'une intuition venue d'ailleurs, je relance le daemon cron et ... ça marche, le nom du jour est en français :fou:

Bon, quand je relance le daemon cron, je le fais en root qui a LANG=fr_FR.utf8 tout comme l'utilisateur standard.
Est-ce que ma variable d'environnement vu plus haut dans mon fichier cron n'est pas prise en compte ?
Est-ce que le fait de relancer le daemon cron depuis root force la variable d'environnement LANG à fr... ?
Est-ce que lors du démarrage cron se place en anglais juste pour m'embêter ?
Est-ce que je pose trop de questions ?

Re: [cron]commande date en anglais (ouvert)

Publié : sam. 22 mai 2010, 06:18
par benjarobin
Oui tu pose trop de question :copain: :humour:
Rajoute un export devant : LANG=fr_FR.utf8

Re: [cron]commande date en anglais (ouvert)

Publié : sam. 22 mai 2010, 11:26
par LaurentuX
J'essaye de ce pas et donnerai le verdict, je vais essayer toutes les configs les plus tordues et si ça marche, j'accepterai le petit trait d'humour... quoique venant d'un gars avec vista :parterre:

Re: [cron]commande date en anglais (ouvert)

Publié : sam. 22 mai 2010, 11:53
par LaurentuX
Donc je reviens et je ne me moquerai pas d'un gars qui a choppé la Tourista (Vista).
MAIS ça marche pas plus.
J'ai modifié mon fichier cron de la sorte :

Code : Tout sélectionner

export LANG=fr_FR.utf8
et c'est pareil.
Je me sens donc obligé de reposer plein de questions... NAN je déconne.

Par contre ce que j'observe me pose un soucis :
[*]Je démarre la machine (aucune erreur) : le script lancé par cron est en anglais
[*]Je relance le daemon (/etc/rc.d/crond restart) : le même script lancé par cron est en français

Alors ? Suis fou ou pas ! Un truc de dingue je vous dit. Qui à dit "espèce de cron" ?

Bon ben je continue à chercher et je surveille vos idées, j'ai un fût de bière au frais et un week-end de 3 jours, s'il faut jouer au plus cron, je suis pas sur de perdre :boxe:

Re: [cron]commande date en anglais (ouvert)

Publié : sam. 22 mai 2010, 14:03
par Refuznik
Je démarre la machine (aucune erreur) : le script lancé par cron est en anglais
Normal.
[*]Je relance le daemon (/etc/rc.d/crond restart) : le même script lancé par cron est en français
Tu t'es deja réponsu : - Est-ce que le fait de relancer le daemon cron depuis root force la variable d'environnement LANG à fr... ?

Tu as mis la variable d'environnement dans ton fichier utilisateur ou dans ton fichier root ?

Re: [cron]commande date en anglais (ouvert)

Publié : sam. 22 mai 2010, 14:40
par LaurentuX
J'ai mis la variable dans le fichier de l'utilisateur /var/spool/cron/laurent

Code : Tout sélectionner

LANG=fr_FR.utf8
*/30 * * * * /home/laurent/.scripts/getImgSat_Cron.sh > /dev/null
*/10 * * * * /home/laurent/.scripts/Infos_pour_Conky/getInfo_Cron.sh > /dev/null
Ah ben c'est malin, maintenant vous savez tous que mon prénom c'est laurent et pas LaurentuX !

Que je mette LANG=fr_FR.utf8 ou export LANG=fr_FR.utf8, c'est le même résultat

Ce que je fais en root c'est juste de relancer le daemon cron.

Mon problème réside dans le second script qui utilise la commande date pour obtenir le nom réduit des jours pour interroger un site qui attend 'lun' pour lundi, etc. Du coup ma requête comporte 'Mon' au lieu de 'lun'.

J'ai honteusement contourné le problème en récupérant le numéro du jour de la semaine (date -d"madate' +%w) et un tableau de 7 chaines (dim lun etc etc).
MAIS je laisse le post ouvert afin de trouver une solution car, d'une part d'autre auront peut-être le même soucis et d'autre part d'autres commandes 'localisées' ne trouverons peut-être pas de contournement aussi trivial.

A vot' bon coeur

PS : Refuznik tu dis que c'est normal qu'au lancement de ma machine le script s'exécute dans un environnement de langue anglaise. Ben je suis pas d'accord, surtout en ayant précisé export LANG=fr juste avant d'appeler le script...

Re: [cron]commande date en anglais (ouvert)

Publié : sam. 22 mai 2010, 17:17
par Refuznik
Ben je suis pas d'accord, surtout en ayant précisé export LANG=fr juste avant d'appeler le script...
En fait si tu préfère le shell de cron est en anglais à la base.
Tu mets au début de ton script :

#!/bin/bash
#
export LANG=fr_FR

Re: [cron]commande date en anglais (ouvert)

Publié : sam. 22 mai 2010, 17:30
par LaurentuX
Ok, si je comprends bien, tout les forums qui indiquent de mettre LANG=fr_FR... dans le fichier cron mentent de manière honteuse !
C'est la théorie du complot, tous contre moi, ahhhhhhhhhhhhhhhh

Ta solution est parfaite, simple, propre, efficace (testée) et tellement évidente que je rougis de n'y avoir pensé. Je focalisais sur cron, non mais quel cron quand même (oui je sais mais ça m'amuse)

Merci :onmeritepas:

Petit coucou à benjarobin, fait pas la tête, c'est pas grave d'avoir vista, moi aussi je l'ai eu... pendant 5 minutes le temps qu'il se suicide (création des dvds de restauration qui a totalement bloquée la machine).

Re: [cron]commande date en anglais (résolu)

Publié : sam. 22 mai 2010, 19:27
par benjarobin
J'utilise pas Vista ^^, mais Windows XP pour les jeux... J'ai bien Windows 7 dans un coin que j'ai acheter dans les précommande mais la flemme de l'installer... Ce sera pour un PC fixe
Sinon je ne suis pas sûre de comprendre où tu avait mis ton LANG. Je voulais dire dans le script qui lance le programme.

Re: [cron]commande date en anglais (résolu)

Publié : sam. 22 mai 2010, 20:10
par LaurentuX
Je sens que si je réponds à la question "ou as tu mis ton LANG" on va dérapper très vite !
(je l'avais mis dans mon fichier cron (accessible via crontab -e ou sinon /var/spool/cron/<username>) et pas dans le script lui-même, là était mon erreur)

Pour vista n'y voit aucune attaque, au boulot j'utilise les produits µ$oft, les clients veulent des applis sous WinDaub !
Sinon y a pas photo, passe à W7, vista sera vite un souvenir lointain. Comme l'a dit un employé de microsoft (certainement un ex-salarié depuis) "Pour Seven on a pris Vista, on à virer ce qui ne marchait pas et on a corrigé le reste !"

Pour les jeux, j'ai un apprenti qui tente tout ce qu'il trouve sous wine. En général ça marche pas mal.
Cet âne batté est même allez installer Word et compagnie sur une Ubuntu (il se sent pas encore assez poilu pour arch) via wine.
:sm:

Au passage je deviens archer de cavalerie, YES Champagne !