crontab schedule para cada hora X

1

Ao programar um trabalho a cada x horas, como saber quais horas serão selecionadas?

Por exemplo, temos um cronjob definido para */8 , que é executado às 2h, 10h, etc., em vez da meia-noite, 8h, etc.

    
por ℝaphink 25.05.2012 / 11:01

5 respostas

1

Mostrar os registros do cron que provam isso.

Talvez o cron ou o sistema seja executado em um fuso horário diferente?

    
por 25.05.2012 / 11:04
2

Tente isto:

0 2-18/8 * * * /path/to/your/script
    
por 25.05.2012 / 11:21
0

Para esclarecer a situação, na verdade vimos gráficos que mostraram que o trabalho começou às 2h, 10h, etc.

Ao investigar o problema, descobrimos que o cron foi lançado com TZ=UTC , enquanto /etc/timezone está definido como Europe/Zurich . Parece que o cron foi reiniciado no momento em que /etc/timezone continha UTC e nunca foi reiniciado, pois /etc/timezone foi alterado.

Como resultado, o cron não apenas inicia seus jobs no UTC, mas também faz login no UTC, o que resulta em /var/log/auth.log contendo itens como:

May 25 08:19:57 ip-10-50-81-194 sshd[6216]: pam_unix(sshd:session): session opened for user root by (uid=0)
May 25 06:25:01 ip-10-50-81-194 CRON[6385]: pam_unix(cron:session): session opened for user root by (uid=0)
May 25 06:29:44 ip-10-50-81-194 CRON[6385]: pam_unix(cron:session): session closed for user root
May 25 08:53:36 ip-10-50-81-194 sudo:   nagios : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/opt/nagios-plugins/check_system_update.pl

Como o collectd está sendo executado corretamente em Europe/Zurich , ele mostra os trabalhos a partir das 2h00 (meia-noite UTC), 10h (8h UTC), etc.

    
por 25.05.2012 / 11:36
0

A passagem da variável TZ sempre fará com que o script seja executado nesse fuso horário, independentemente do fuso horário local do seu sistema. Se você não quiser esse comportamento, remova a variável TZ da linha.

    
por 25.05.2012 / 11:43
0

O * significa firs-last, por isso, se você configurar o cronjob como

0 */2 * * * echo "runat midn, 2am, 4am ..., everyday"

deve ser o mesmo que

0 0-23/2 * * * echo "runat midn, 2am, 4am ..., everyday"

No seu exemplo, trabalhos como

0 0-23/8 * * * command

ou

0 */8 * * * command deve ser executado às 0:00 8:00 16:00 ...

Talvez sua hora ou horário estejam erradas. Mostre-nos sua saída de crontab -l e verifique suas configurações atuais de hora e fuso horário.

    
por 25.05.2012 / 12:15

Tags