Διαφορετικό LC_TIME στο login shell και στο cronjob

George Notaras gnot at g-loaded.eu
Wed Dec 20 19:18:28 EET 2006


On Wed, 2006-12-20 at 18:20 +0200, Giorgos Keramidas wrote:
> On 2006-12-20 18:08, George Notaras <gnot at g-loaded.eu> wrote:
> > Εάν ως root τρέξω:
> > 
> > # locale | grep LC_TIME
> > 
> > η τιμή του LC_TIME είναι: LC_TIME="en_US.UTF-8"
> > 
> > Αν βάλω την παραπάνω εντολή σε ένα cronjob, πχ
> > 
> > */1 * * * *     root    locale | grep LC_TIME
> > 
> > Παίρνω: LC_TIME="POSIX"
> > 
> > Αυτό που θα ήθελα να ξέρω είναι το string, το οποίο είναι το φορματ
> > της ημερομηνίας (για τη συνάρτηση strftime) οπουδήποτε κι αν
> > εκτελείται κάποια εντολή (απευθείας στην κονσόλα ή μέσω cron).
> > 
> > Δοκίμασα με την python:
> > 
> > 1) Στην κονσόλα:
> > 
> > # python -c "import locale; print locale.nl_langinfo(locale.D_FMT)"
> > 
> > δίνει: %m/%d/%y
> > 
> > 2) Σε cronjob:
> > 
> > */1 * * * *     root    python -c "import locale; print
> > locale.nl_langinfo(locale.D_FMT)"
> > 
> > πάλι δίνει %m/%d/%y
> > 
> > Το βέβαιο είναι ότι το φορματ αυτό είναι διαφορετικό στο login shell
> > του root από ό,τι στο cronjob. Τουλάχιστον αυτό διαπίστωσα με κάποιο
> > άλλο πρόγραμμα, το οποίο μου είπαν ότι λειτουργεί σωστά. Η διαφορά
> > τους πρέπει να είναι στο αν το έτος γράφεται με 2 ψηφία ή με 4.
> > 
> > Ευχαριστώ προκαταβολικά για οποιαδήποτε βοήθεια.
> 
> Μια αρχική συμβουλή είναι:
> 
>     Ποτέ μη βάζεις οτιδήποτε δεν είναι ένα απλό pathname σε cron job
>     entry, αν δεν είσαι σίγουρος για την επίδραση που μπορεί να έχει
>     ΚΑΘΕ ΕΝΑΣ χαρακτήρας ξεχωριστά.
> 

Εννοείς ότι είναι καλύτερο να γράφει κανείς κάποιο script και στο cron
job entry να υπάρχει μόνο για παράδειγμα:

x x x x x root interpreter /path/to/script

Μάλλον δεν έχω δώσει πολλή σημασία στους κινδύνους από ορθογραφικά κτλ,
αν και προσπαθώ να είμαι όσο πιο προσεκτικός γίνεται.


> Αυτό που θα σου πρότεινα επίσης να ελέγξεις είναι:
> 
>     * Τι shell χρησιμοποιείς
> 
>     * Τι τιμή έχουν οι LC_XXX μεταβλητές όταν τρέχεις login shell
> 

Χρησιμοποιώ bash και οι τιμές τους, όταν εχω κάνει login ως root, είναι:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

>     * Που ορίζονται αυτές οι μεταβλητές πρώτη φορά (ειδικά αν έχεις
>       bash, θέλει ΠΟΛΥ ΠΡΟΣΟΧΗ)

Δεν ξέρω πού ορίζονται. Πιθανότατα να τα ορίζει αρχικά κάποιο
script /etc/profile.d/lang.sh, αλλά και πάλι δεν είμαι βέβαιος, καθώς
δεν με απασχόλησε ποτέ (κακώς).

Το μηχάνημα αυτό έχει fedora 5 (με αναβαθμίσεις από fc3) και χρησιμοποιώ
αυτό που είχα ορίσει παλιά κατά την εγκατάσταση, "en_US.UTF-8". Δεν έχω
προσθέσει ρυθμίσεις γλώσσας σε κανένα από τα:

.bash_profile
.bashrc

όσον αφορά στους users (συμπεριλαμβανομένου του root), ούτε τα
system-wide sto /etc/bashrc.

Στο /etc/sysconfig/i18n υπάρχουν μόνο τα:

LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en:el_GR.UTF-8:el_GR:el"

και το font για το console mode, το οποίο είναι μάλλον άσχετο.

Για κάποιο άλλο αρχείο δεν ξέρω...

Ευχαριστώ





More information about the Linux-greek-users mailing list