PDA

View Full Version : Differenze su script lanciato manualmente e via cron......


stefanoxjx
15-05-2010, 16:08
Ciao a tutti, già da un pezzo ho notato questa cosa (almeno sulla mia distro che è una kubuntu), però non ci ho dato più di tanta importanza perchè comunque non è la fine del mondo.
In poche parole, ho creato uno script che fa il backup giornaliero e crea il nome del file tramite questo comando:


tar cvvzf /mnt/hdusb/backup-`date +"%a"`.tar.gz


Quindi, se per caso fosse domenica, il file si chiamerebbe: backup-dom.tar.gz.
Ora, il problema che ho riscontrato è che se lancio manualmente lo script viene creato il file con nome backup-dom.tar.gz, mentre quando parte da cron il file si chiamerà backup-sun.tar.gz.
Da cosa dipende questo cambio di lingua dall'italiano all'inglese?
Grazie.
Ciao.

Gimli[2BV!2B]
15-05-2010, 17:14
Cron lancia lo script come l'utente a cui appartiene il crontab in cui è impostato: nel tuo caso è root?
Il tuo root/sistema ha come locale en_EN.UTF-8 o simile?
C'è anche da dire che l'ambiente in cui cron invoca gli script è piuttosto scarno, quindi può essere che non imposti il locale (non ho mai avuto fastidi di questo tipo e non posso provare in questo istante, per questo il dubitativo...).

Esempio in bash, al contrario:gimli@kwankey ~$ locale
LANG=it_IT.UTF-8
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC="it_IT.UTF-8"
LC_TIME="it_IT.UTF-8"
LC_COLLATE=C
LC_MONETARY="it_IT.UTF-8"
LC_MESSAGES="it_IT.UTF-8"
LC_PAPER="it_IT.UTF-8"
LC_NAME="it_IT.UTF-8"
LC_ADDRESS="it_IT.UTF-8"
LC_TELEPHONE="it_IT.UTF-8"
LC_MEASUREMENT="it_IT.UTF-8"
LC_IDENTIFICATION="it_IT.UTF-8"
LC_ALL=
gimli@kwankey ~$ date
sab 15 mag 2010, 18.10.01, CEST
gimli@kwankey ~$ LC_TIME="en_EN.UTF-8" date
Sat May 15 18.10:09 CEST 2010
gimli@kwankey ~$ date
sab 15 mag 2010, 18.11.01, CEST
Per avere la data in italiano puoi:
specificare la variabile del locale che ti serve prima del comando, come nell'esempio
specificare la variabile all'inizio di crontab, per farla valere per tutti gli script invocati
controllare che il locale di sistema sia impostato in italiano (questo l'ho elencato per ultimo perché non sono certo che influenzi cron, come ho scritto sopra)

stefanoxjx
15-05-2010, 17:21
;31984967']Cron lancia lo script come l'utente a cui appartiene il crontab in cui è impostato: nel tuo caso è root?
Il tuo root/sistema ha come locale en_EN.UTF-8 o simile?
C'è anche da dire che l'ambiente in cui cron invoca gli script è piuttosto scarno, quindi può essere che non imposti il locale (non ho mai avuto fastidi di questo tipo e non posso provare in questo istante, per questo il dubitativo...).

Esempio in bash, al contrario:gimli@kwankey ~$ locale
LANG=it_IT.UTF-8
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC="it_IT.UTF-8"
LC_TIME="it_IT.UTF-8"
LC_COLLATE=C
LC_MONETARY="it_IT.UTF-8"
LC_MESSAGES="it_IT.UTF-8"
LC_PAPER="it_IT.UTF-8"
LC_NAME="it_IT.UTF-8"
LC_ADDRESS="it_IT.UTF-8"
LC_TELEPHONE="it_IT.UTF-8"
LC_MEASUREMENT="it_IT.UTF-8"
LC_IDENTIFICATION="it_IT.UTF-8"
LC_ALL=
gimli@kwankey ~$ date
sab 15 mag 2010, 18.10.01, CEST
gimli@kwankey ~$ LC_TIME="en_EN.UTF-8" date
Sat May 15 18.10:09 CEST 2010
gimli@kwankey ~$ date
sab 15 mag 2010, 18.11.01, CEST
Per avere la data in italiano puoi:
specificare la variabile del locale che ti serve prima del comando, come nell'esempio
specificare la variabile all'inizio di crontab, per farla valere per tutti gli script invocati
controllare che il locale di sistema sia impostato in italiano (questo l'ho elencato per ultimo perché non sono certo che influenzi cron, come ho scritto sopra)


Ti ringrazio della risposta.
Effettivamente non è che sia un problema, è più che altro una curiosità tanto per aggiungere ancora qualcosa alla mia scarsa cultura :D

Comunque, provo ad inserire nello script la riga che mi hai consigliato.
Solo per curiosità, ti posto il risultato del comando locale nel mio PC:

stefano# locale
LANG=it_IT.UTF-8
LANGUAGE=
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC="it_IT.UTF-8"
LC_TIME="it_IT.UTF-8"
LC_COLLATE="it_IT.UTF-8"
LC_MONETARY="it_IT.UTF-8"
LC_MESSAGES="it_IT.UTF-8"
LC_PAPER="it_IT.UTF-8"
LC_NAME="it_IT.UTF-8"
LC_ADDRESS="it_IT.UTF-8"
LC_TELEPHONE="it_IT.UTF-8"
LC_MEASUREMENT="it_IT.UTF-8"
LC_IDENTIFICATION="it_IT.UTF-8"
LC_ALL=


Ciao.