Como posso definir o fuso horário para Crontabs?

Como posso definir o fuso horário para Crontabs?
Crontab, uma forma reduzida de Tabela Cron, é um comando e um arquivo de texto nos sistemas UNIX/Linux usados ​​para determinar a programação de trabalhos de cron. O que é um trabalho de Cron? Um trabalho de Cron, também amplamente referido como Cron, é um agendador baseado no tempo que executa tarefas nos sistemas Linux nos horários especificados. Ele funciona com a ajuda dos empregos de daemon Cron Crond é extremamente útil na automação de scripts de shell e outros comandos que precisam ser executados em intervalos regulares, o que seria tedioso quando feito manualmente.

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.