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