Διαφορετικό 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