Διαφορετικό LC_TIME στο login shell και στο cronjob
Giorgos Keramidas
keramida at ceid.upatras.gr
Wed Dec 20 18:20:24 EET 2006
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, αν δεν είσαι σίγουρος για την επίδραση που μπορεί να έχει
ΚΑΘΕ ΕΝΑΣ χαρακτήρας ξεχωριστά.
Αυτό που θα σου πρότεινα επίσης να ελέγξεις είναι:
* Τι shell χρησιμοποιείς
* Τι τιμή έχουν οι LC_XXX μεταβλητές όταν τρέχεις login shell
* Που ορίζονται αυτές οι μεταβλητές πρώτη φορά (ειδικά αν έχεις
bash, θέλει ΠΟΛΥ ΠΡΟΣΟΧΗ)
More information about the Linux-greek-users
mailing list