Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

locale avec cron

8 réponses
Avatar
Alarch
Bonjour,

le problème me semblait tout bête mais je ne trouve nulle part une solution
qui marche.

Je lance un script en local, il me remplit mon log en utilisant mes locales
c-à-d fr_FR.UTF-8, je le lance dans le cron de mon utilisateur il n'a plus
de langue définie et m'écrit les dates en anglais. J'essaye d'exporter
LC_ALL="fr_FR.UTF-8" avant de lancer mon script dans la ligne cron :
8 0 * * 0 export LC_ALL="fr_FR.UTF-8";/opt/backup/scripts/svg.sh

mais ça ne marche pas j'ai :

+--------------------------------------------------------------------------------+
Année : 2009 Semaine : 44
Fin de la sauvegarde quotidienne rsync du mercredi 28 octobre 2009
+--------------------------------------------------------------------------------+

en interactif et :


+--------------------------------------------------------------------------------+
Année : 2009 Semaine : 44
Fin de la sauvegarde quotidienne rsync du Wednesday 28 October 2009
+--------------------------------------------------------------------------------+

avec cron. Comment faire prendre en compte la langue par cron ?

Merci de votre aide

8 réponses

Avatar
Lucas Levrel
Le 28 octobre 2009, Alarch a écrit :

Je lance un script en local, il me remplit mon log en utilisant mes locales
c-à-d fr_FR.UTF-8, je le lance dans le cron de mon utilisateur il n'a plus
de langue définie et m'écrit les dates en anglais. J'essaye d'exporter
LC_ALL="fr_FR.UTF-8" avant de lancer mon script dans la ligne cron :
8 0 * * 0 export LC_ALL="fr_FR.UTF-8";/opt/backup/scripts/svg.sh



Qu'obtiens-tu avec echo $LC_ALL dans svg.sh ?

Tu pourrais passer la locale en argument de ton script, peut-être ?

--
LL
Avatar
Benoit Izac
Bonjour,

le 28/10/2009 à 20:13, Alarch a écrit dans le
message <4ae897e2$0$998$ :

Je lance un script en local, il me remplit mon log en utilisant mes locales
c-à-d fr_FR.UTF-8, je le lance dans le cron de mon utilisateur il n'a plus
de langue définie et m'écrit les dates en anglais. J'essaye d'exporter
LC_ALL="fr_FR.UTF-8" avant de lancer mon script dans la ligne cron :
8 0 * * 0 export LC_ALL="fr_FR.UTF-8";/opt/backup/scripts/svg.sh



De quel cron s'agit-il (vixie-cron, bcron, dcron, fcron, ...) ?

--
Benoit Izac
Avatar
Alarch
Benoit Izac wrote:

Bonjour,

le 28/10/2009 à 20:13, Alarch a écrit dans le
message <4ae897e2$0$998$ :

Je lance un script en local, il me remplit mon log en utilisant mes
locales c-à-d fr_FR.UTF-8, je le lance dans le cron de mon utilisateur il
n'a plus de langue définie et m'écrit les dates en anglais. J'essaye
d'exporter LC_ALL="fr_FR.UTF-8" avant de lancer mon script dans la ligne
cron : 8 0 * * 0 export LC_ALL="fr_FR.UTF-8";/opt/backup/scripts/svg.sh



De quel cron s'agit-il (vixie-cron, bcron, dcron, fcron, ...) ?



Ah oui bonne question, visiblement dans debian lenny le paquet cron fournit
bcron alors que je croyais que c'était vixie... sur gentoo le choix était
explicite.
Avatar
Alarch
Lucas Levrel wrote:

Le 28 octobre 2009, Alarch a écrit :

Je lance un script en local, il me remplit mon log en utilisant mes
locales c-à-d fr_FR.UTF-8, je le lance dans le cron de mon utilisateur il
n'a plus de langue définie et m'écrit les dates en anglais. J'essaye
d'exporter LC_ALL="fr_FR.UTF-8" avant de lancer mon script dans la ligne
cron : 8 0 * * 0 export LC_ALL="fr_FR.UTF-8";/opt/backup/scripts/svg.sh



Qu'obtiens-tu avec echo $LC_ALL dans svg.sh ?



rien du tout LC_ALL n'est tout simplement pas défini...

Tu pourrais passer la locale en argument de ton script, peut-être ?



Ah... alors là je ne comprends plus, j'ai fait une bourde dans mes tests
l'autre jour visiblement, car maintenant si je place dans mon script avant
mes écritures de log :
export LC_ALL="fr_FR.UTF-8"
ça fonctionne... C'est donc tout bête... il me semblait avoir testé ça de
suite et voyant que ça ne marchait pas j'ai commencé à chercher des choses
compliquées...
Navré du dérangement.

Du coup je mets le bout de code qui marche si jamais ça peut servir à
quelqu'un qui se poserait la même question bête.

#! /bin/bash

export LC_ALL="fr_FR.UTF-8"
echo "LC_ALL après exportation : $LC_ALL"
echo " Année $(date +%Y) semaine $(date +%V). Sauvegarde rsync du
$(date '+%A %d %B %Y') jour dans la semaine : $(date +%w)"
Avatar
Dominique MICOLLET
Alarch wrote:

Lucas Levrel wrote:
Ah... alors là je ne comprends plus, j'ai fait une bourde dans mes tests
l'autre jour visiblement, car maintenant si je place dans mon script avant
mes écritures de log :
export LC_ALL="fr_FR.UTF-8"
ça fonctionne...



Vous aviez peut-être oublié le export ?

Si l'on veut s'en passer, il convient d'écrire :

LC_ALL="fr_FR.UTF-8 echo .....

La locale n'est alors définie que pour la commande echo

--
Dominique MICOLLET
Adresse email : enlever deux francs
Avatar
Benoit Izac
Bonjour,

le 29/10/2009 à 16:27, Alarch a écrit dans le
message <4ae9b467$0$912$ :

Je lance un script en local, il me remplit mon log en utilisant mes
locales c-à-d fr_FR.UTF-8, je le lance dans le cron de mon utilisateur il
n'a plus de langue définie et m'écrit les dates en anglais. J'essaye
d'exporter LC_ALL="fr_FR.UTF-8" avant de lancer mon script dans la ligne
cron : 8 0 * * 0 export LC_ALL="fr_FR.UTF-8";/opt/backup/scripts/svg.sh



De quel cron s'agit-il (vixie-cron, bcron, dcron, fcron, ...) ?



Ah oui bonne question, visiblement dans debian lenny le paquet cron fournit
bcron alors que je croyais que c'était vixie... sur gentoo le choix était
explicite.



Selon la page de manuel :

| Note that comments are not allowed on the same line as cron commands,
| since they will be taken to be part of the command. Similarly, com‐
| ments are not allowed on the same line as environment variable set‐
| tings.

Mets « LC_ALL="fr_FR.UTF-8" » sur une seule ligne dans ta crontab.

--
Benoit Izac
Avatar
Benoit Izac
Bonjour,

le 29/10/2009 à 16:45, Alarch a écrit dans le
message <4ae9b8aa$0$892$ :

#! /bin/bash

export LC_ALL="fr_FR.UTF-8"
echo "LC_ALL après exportation : $LC_ALL"
echo " Année $(date +%Y) semaine $(date +%V). Sauvegarde rsync du
$(date '+%A %d %B %Y') jour dans la semaine : $(date +%w)"



Note que, dans ton cas, modifier LC_TIME suffit.

--
Benoit Izac
Avatar
Alarch
Dominique MICOLLET wrote:

Alarch wrote:

Lucas Levrel wrote:
Ah... alors là je ne comprends plus, j'ai fait une bourde dans mes tests
l'autre jour visiblement, car maintenant si je place dans mon script
avant mes écritures de log :
export LC_ALL="fr_FR.UTF-8"
ça fonctionne...



Vous aviez peut-être oublié le export ?

Si l'on veut s'en passer, il convient d'écrire :

LC_ALL="fr_FR.UTF-8 echo .....

La locale n'est alors définie que pour la commande echo



Je ne connaissais pas cette astuce. En fait l'autre jour j'ai fait tellement
de tests qu'il est possible que j'ai effacé le export ou quelque chose de
ce genre. Et une fois qu'on est obnubilé par un problème on a du mal à voir
le grosse bêtise qui crève les yeux...