como usar o TimeZone com a guia Cron

4

Eu trabalho em uma data específica [horário do cliente, não hora local] para enviar e-mails para meus clientes. Eu uso cpanel cron job Eu tentei usar cron job com fuso horário

mas continua a enviar o meu fuso horário local

32 16 08 05 *  /usr/bin/curl CRON_TZ=Africa/Algiers https://www.example.com/SendCron.php?CronID=382 #CronID382END # z93v66 

o que eu fiz de errado usando Cron_TZ ??

    
por Salem Ahmed 08.05.2017 / 15:11

1 resposta

8

Seu CRON_TZ= está em um lugar errado no seu arquivo crontab , como um atributo de opção para /usr/bin/curl .

Você deve tê-lo como uma variável de ambiente antes das entradas do cron :

CRON_TZ=Africa/Algiers 

32 16 08 05 *  /usr/bin/curl https://www.example.com/SendCron.php?CronID=382

Se você precisa ter o fuso horário configurado para uma única entrada cron na mesma linha, não é possível com a variável de ambiente CRON_TZ , mas é necessário invocar env (execute um programa em um ambiente modificado) para alterar o TZ :

32 16 08 05 * /usr/bin/env TZ=Africa/Algiers /usr/bin/curl https://www.example.com/Send...

Observe que ambos alteram o fuso horário para o comando, não para o daemon do cron . O daemon cron apenas verifica se os campos correspondem ou não à hora atual, independentemente da variável CRON_TZ . A página de manual para systemd-cron crontab explica essa limitação:

The systemd-cron units runs with a defined timezone. It currently does not support per-user timezones. All the tasks: system's and user's will be run based on the configured timezone. Even if a user specifies the TZ environment variable in his crontab this will affect only the commands executed in the crontab, not the execution of the crontab tasks themselves.

Se você precisar executar os agendamentos com base no fuso horário, deverá alterar o fuso horário do servidor , por exemplo:

ln -sf /usr/share/zoneinfo/Africa/Algiers /etc/localtime
    
por 08.05.2017 / 15:32