Como interpretar este comando crontab?

1

Sei que, se eu escrevesse em crontab -e seguindo o comando 01 04 * * * somecommand , ele executaria somecommand às 4:01 am todos os dias de cada mês.

O que acontece se eu escrever * * * * * somecommand ? Ele vai rodar somecommand a cada minuto? Essa sintaxe funcionará também?

E é possível usar strings especiais como @reboot , @daily , etc, como é explicado aqui . A que horas do dia somecommand será executado se eu escrever o comando @daily somecommand ?

    
por Bakhtiyor 12.02.2011 / 01:09

2 respostas

5

Isso executará seu comando a cada minuto. É uma sintaxe válida.

Aqui estão os detalhes de info crontab :

        The first five fields  shall be integer patterns that specify the
        following:

        1. Minute [0,59]

        2. Hour [0,23]

        3. Day of the month [1,31]

        4. Month of the year [1,12]

        5. Day of the week ([0,6] with 0=Sunday)

       Each  of  these  patterns  can be either an asterisk (meaning all valid
       values), an element, or a list of elements separated by commas. An ele‐
       ment  shall  be  either  a  number or two numbers separated by a hyphen
       (meaning an inclusive range). The specification of days can be made  by
       two  fields  (day  of the month and day of the week).  If month, day of
       month, and day of week are all asterisks, every day shall  be  matched.
       If either the month or day of month is specified as an element or list,
       but the day of week is an asterisk, the month and day of  month  fields
       shall  specify  the days that match. If both month and day of month are
       specified as an asterisk, but day of week is an element or  list,  then
       only the specified days of the week match. Finally, if either the month
       or day of month is specified as an element or list, and the day of week
       is  also  specified as an element or list, then any day matching either
       the month and day of month, or the day of week, shall be matched.

O artigo ao qual você está vinculado parece ser bom. Está dando alguns bons exemplos e é realmente mais fácil de ler do que o excerto de página de manual que forneci aqui.
Você deve ser capaz de usar a sintaxe que fala.

De acordo com o meu crontab, o @daily é executado às 6:25.

$ grep daily /etc/crontab 
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
    
por belacqua 12.02.2011 / 01:43
3

Você também pode especificar freqüências ímpares usando barras em cada coluna.

* */2 * * * foo

executará foo em horas que são divisíveis por 2, a saber: 12h, 2h, 4h, ..., 22h, 12h.

Lembre-se deste comando

*/1 * * * * env > /home/yourUser/env.out

produzirá as variáveis de ambiente do ambiente crontab para você trabalhar, no seu crontab. Você pode usar talvez variáveis como $ {HOME}, $ {SHELL} para tornar o script mais limpo e talvez usar o script em outra máquina.

    
por theTuxRacer 12.02.2011 / 10:40