Geralmente, os trabalhos de Cron são executados usando o horário local definido no sistema. No entanto, você pode preferir executar o trabalho de Cron em um fuso horário diferente sem necessariamente alterar a hora e a data do servidor.
Você pode verificar sua hora local usando o comando timedatectl da seguinte forma:
$ timedatectl
Você também pode usar o comando de data da seguinte forma:
$ data
Então, como você pode definir um fuso horário diferente para seus crontabs? Vamos descobrir.
Como definir o fuso horário para Crontabs
No seu sistema Linux local, os fusos horários são geralmente especificados no /usr/share/zoneinfo diretório. O diretório contém uma lista de continentes e países e seus fusos horários, como mostrado abaixo.
$ ls/usr/share/zoneInfo/
Você pode ajustar facilmente o fuso horário atual para um diferente usando a sintaxe mostrada. Por exemplo, para definir o sistema para o tempo em Tóquio, Japão, simplesmente executar:
$ sudo ln -sf/usr/share/zoneinfo/Asia/Tóquio/etc/localtime
No entanto, você não pode mudar o tempo do seu sistema, especialmente quando vários usuários agendem diferentes trabalhos de Cron. Isso afetaria o tempo que seus empregos em Cron funcionarão.
Felizmente, você pode configurar um fuso horário específico para o seu trabalho de Cron da seguinte maneira:
Primeiro, você precisa exportar a variável TZ em seu script de shell antes de outras entradas do shell. Em seguida, acesse seu crontab e use a variável de ambiente Crontab Cron_Tz No início do arquivo Crontab.
Suponha que eu queira definir o trabalho de Cron para executar um script de backup às 14h20 todos os dias em Europa/Londres tempo e não minha hora local. Meu horário local é 2 horas antes do horário de Londres, então às 14h20 em Londres, minha hora local será 16h20 ou 1420 horas.
Primeiro, vá até o arquivo de script do Shell e exporte a variável TZ antes de quaisquer outras entradas de script. Confira o que eu fiz no meu script de shell.
Exportar TZ = Europa/Londres
Salve as alterações e saia do script.
Em seguida, acesse seu arquivo Crontab executando o comando:
$ CRONTAB -E
Certifique -se de definir a variável Crontab CRON_TZ Antes de todas as outras entradas do Cron, como segue.
Cron_tz = Europa/Londres
20 14 * * */Home/James/Backup.sh
Salvar e sair do crontab. Para ter certeza das configurações, você pode listar o crontab usando o comando:
$ CRONTAB -L
Então, quando o relógio marcou as 14:20 da hora de Londres, que corresponde às 16:40 horário local ou 1620 horas, o backup foi bem -sucedido.
Conclusão
Este guia é uma demonstração perfeita de que você pode realmente definir um fuso horário especificado para seus crontabs sem alterar o tempo do seu sistema. Dessa forma, você pode configurar tarefas diferentes para executar em diferentes fusos horários para atender às suas necessidades, por exemplo, se você deseja enviar e -mails para os assinantes de um certo fuso horário no tempo deles e não na hora local.