Inércia Sensorial

15 de May de 2007

Tutorial de cron e crontab

Filed under: Programação — inerte @ 22:28

O crontab é o arquivo de configuração do cron, que executa comandos em determinados intervalos de tempo.

Digita na linha de comando para editá-lo com o editor de textos padrão da sua conta de usuário na máquina:

[code]crontab -e[/code]

Coloque um comando por linha. A estrutura é a seguinte:

[code]# Jogo da velha no começo da linha é comentário
# +—————- minuto (0 – 59)
# | +————- hora (0 – 23)
# | | +———- dia do mês (1 – 31)
# | | | +——- mês (1 – 12)
# | | | | +—- dia da semana (0 – 7) (Domingo=0 or 7)
# | | | | |
# * * * * * Comando para executar[/code]

Imaginemos que você queira rodar o comando “python2.4 /home/usuario/script.py” todo dia às duas da manhã:

[code]00 2 * * * python2.4 /home/usuario/script.py[/code]

Para especificar um intervalo em qualquer campo, utilize um traço, ou sinal de subtração (esse: “-“). Por exemplo, a configuração abaixo será executada todo dia da uma às dez da manhã de minuto em minuto:

[code]* 1-10 * * * python2.4 /home/usuario/script.py[/code]

Para especificar “ou”, utilize uma vírgula. Segue um exemplo para ser executado apenas às duas da manhã e da tarde, aos Domingos e Quarta-Feiras:

[code]* 2,14 * * sun,wed python2.4 /home/usuario/script.py[/code]

Se você quer rodar o script de cinco em cinco minutos no Sábado (note a divisão dos minutos):

[code]00-59/5 * * * 6 python2.4 /home/usuario/script.py[/code]

Por padrão, o crontab enviará um email à conta que o carrega se existe alguma saída no comando. Para cancelar o email do crontab, redirecione a saída para outro lugar. Por exemplo, para /dev/null

[code]00 2 * * * python2.4 /home/usuario/script.py >/dev/null 2>&1[/code]

Para redirecionar a um arquivo:

[code]00 2 * * * python2.4 /home/usuario/script.py >/home/usuario/arquivo.log[/code]

Para ver o seu crontab:

[code]crontab -l[/code]

Para apagar o crontab:

[code]crontab -r[/code]

Quaisquer dúvidas, comentem.

3 Comments »

  1. Ola,
    Estou tentando rodar duas linhas de comando no meu crontab e salvando num .log. Mas o resultado do meu log sai todo baguncado.
    Os comandos sao:
    # this is 20.00PM on 11 September
    0 20 11 9 * . ~/.profile; cd /apps/tower/extract; /apps/tower/extract/run_it.sh scandates_real_11Sep_NSW > cron_11Sep_nsw.log 2>&1
    0 20 12 9 * . ~/.profile; cd /apps/tower/extract; /apps/tower/extract/run_it.sh scandates_real_12Sep_NSW > cron_12Sep_nsw.log 2>&1
    #

    As duvidas que tenho eh:
    1- Devo colocar alguma coisa a mais ou a menos pra fazer ele funcionar (tipo um ponto e virgula)?
    2- Posso rodar 2 comandos ao mesmo tempo(um pra cada dia) e salvar em dois logs diferentes?
    3- Por que o primeiro comando parece rodar legal e o segundo eh todo baguncado e nao faz o que deve fazer?

    Agradeco a quem puder responder,
    Juliana

    Comment by Juliana — 13 de September de 2009 @ 20:27

  2. não dá pra botar cosas do shell, como . ou cd, num crontab.. ou vc faz um shell script, ou usa bash -c '. ~/.profile; cd ..'

    mas vc falou isso a 4 meses, juliana, acho que vc deve ter já conseguido, ou desistido, e n acho que vá voltar aqui, 😛 mas enfim.

    Comment by elias — 16 de January de 2010 @ 13:33

  3. Boa tarde,

    Estou com um site de leilao de segundos .. e instalei e esta ok.. so esta faltando configurar o cron e nao sei como fazer eu tenho o dreamhost .. nas instroçoes de instalão do leilao pedia para eu configurar o meu cron para executar a cada um minuto.. como faço isso? e qual o comando? desde ja agradeço a sua atençao.

    Boudoux
    [email protected]

    Comment by boudoux — 12 de January de 2011 @ 15:33

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress