Di solito, i lavori Cron vengono eseguiti utilizzando l'ora locale definita nel sistema. Tuttavia, potresti preferire eseguire il lavoro Cron in un fuso orario diverso senza necessariamente modificare l'ora e la data del tuo server.
Puoi controllare la tua ora locale usando il comando timedatectl come segue:
$ timedatectl
Puoi anche usare il comando date come segue:
$ data
Quindi, come puoi impostare un fuso orario diverso per i tuoi Crontab?? Scopriamolo.
Come impostare il fuso orario per Crontabs
Nel tuo sistema Linux locale, i fusi orari sono generalmente specificati nel in /usr/share/zoneinfo directory. La directory contiene un elenco di continenti e paesi e i loro fusi orari, come mostrato di seguito.
$ ls /usr/share/zoneinfo/
Puoi facilmente regolare il fuso orario corrente su uno diverso usando la sintassi mostrata. Ad esempio, per impostare il sistema sull'ora di Tokyo, in Giappone, è sufficiente eseguire:
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtimeTuttavia, non è possibile modificare l'ora del sistema, soprattutto quando più utenti pianificano diversi lavori Cron. Ciò influenzerebbe il tempo di esecuzione dei loro lavori Cron.
Per fortuna, puoi configurare un fuso orario specifico per il tuo lavoro Cron come segue:
Innanzitutto, devi esportare la variabile TZ nello script Shell prima di qualsiasi altra voce Shell. Quindi, accedi al tuo crontab e usa la variabile d'ambiente crontab CRON_TZ all'inizio del file crontab.
Supponiamo di voler impostare il processo Cron per eseguire uno script di backup alle 14:20 ogni giorno in Europa/Londra ora e non la mia ora locale. La mia ora locale è 2 ore avanti rispetto all'ora di Londra, quindi alle 14:20 a Londra, la mia ora locale sarà alle 16:20 o 1420 HRS.
Per prima cosa, vai al file di script Shell ed esporta la variabile TZ prima di qualsiasi altra voce di script. Guarda cosa ho fatto nel mio script Shell.
EXPORT TZ=Europa/Londra
Salva le modifiche ed esci dallo script.
Successivamente, accedi al tuo file crontab eseguendo il comando:
$ crontab -eAssicurati di definire la variabile crontab CRON_TZ prima di tutte le altre voci Cron come segue.
CRON_TZ=Europa/Londra20 14 * * * /home/james/backup.sh
Salva ed esci dal crontab. Per essere sicuri delle impostazioni, puoi elencare il crontab usando il comando:
$ crontab -lQuindi, quando l'orologio ha segnato le 14:20 ora di Londra, che corrisponde alle 16:40 ora locale o 1620 HRS, il backup è andato a buon fine.
Conclusione
Questa guida è una dimostrazione perfetta che puoi effettivamente impostare un fuso orario specifico per i tuoi Crontab senza modificare l'ora del tuo sistema. In questo modo, puoi configurare diverse attività da eseguire in fusi orari diversi in base alle tue esigenze, ad esempio se desideri inviare e-mail agli abbonati di un determinato fuso orario alla loro ora e non alla tua ora locale.