Cron: facilite o agendamento de tarefas no Linux - Canaltech
Cron: facilite o agendamento de tarefas no Linux
Por Felipe Arruda | 16 de Maio de 2014 às 12h36
São diversas as razões para se agendar uma tarefa no Ubuntu Linux. Você pode, por exemplo, querer programar o computador para que o backup dos arquivos mais importantes seja feito às 2h da madrugada, quando ninguém estará usando a máquina. Outro cenário possível é a necessidade de automatizar a execução periódica de determinado comando ou script: por exemplo, apagar o conteúdo de algum diretório a cada 15 minutos.
Seja qual for o propósito, o agendador de tarefas cron pode lhe ajudar. E para configurá-lo, usaremos o comando crontab, responsável por auxiliar a configuração de maneira mais intuitiva.
Crontab: como usar?
Primeiramente, abra o emulador de terminal do Ubuntu Linux. Para isso, você pode clicar no ícone do Dash, digitar terminal e, em seguida, pressionar a tecla Enter. Depois disso, execute o comando crontab -e. Porém, note que isso permitirá ao seu usário agendar tarefas das quais ele tem permissão para realizar. Caso você precise de permissões maiores, será necessário usar o sudo na mesma linha de comando: sudo crontab -e.
Logo depois de pressionar Enter, você terá que escolher o editor de textos de sua preferência. Além do Vim, cujo funcionamento já abordamos em outro tutorial, há também o Nano, de utilização mais fácil e intuitiva. Para escolhê-lo, pressione a tecla numérica equivalente à linha do editor.
Se tudo ocorrer como esperado, você poderá, enfim, editar o arquivo de configuração do cron. Mas antes de começar, note que ele possui muitas linhas que iniciadas com o caractere #, conhecido popularmente como "sustenido" ou "jogo da velha". Essas são linhas de comentários e estão presentes, basicamente, para passar instruções mais detalhadas a quem estiver editando o arquivo.
Para agendar uma tarefa, será necessário incluir uma linha nova, logo abaixo do último comentário. E a sintaxe dessa linha segue a seguinte fórmula:
minutos(0-59) horas(0-23) dia(1-31) mês(1-12) dia_da_semana(0-6) comando
Sendo assim, se quiséssemos que o comando /bin/exemplo fosse executado todo dia, às 14h, a linha seria a seguinte:
00 14 * * * /bin/exemplo
Note que os valores para minutos e horas começam a partir do zero. Sendo assim, os minutos vão até 59 e as horas até 23. Se quiséssemos reprogramar o exemplo acima para a meia-noite, usaríamos:
00 00 * * * /bin/exemplo
Também podemos especificar a data ou dia da semana em que o comando será executado:
23 15 2 1 5 /bin/exemplo
Os números 2 1 5 indicam, respectivamente, o dia 2 do mês de janeiro (1) e, também, toda sexta-feira (5) do mesmo mês. Mas o cron permite que agendamentos bem mais específicos sejam feitos. Veja:
01,31 04,05 1-10 2,7 * /bin/exemplo
Essa linha faz com que o comando /bin/exemplo seja executado às 04h01, 04h31, 05h01 e 05h31 (01,31 04,05) dos dias que vão de 1 a 10 (1-10) dos meses de fevereiro e julho (2,7). Com isso, aprendemos que um intervalo de tempo pode ser especificado com o hífen, enquanto uma lista de valores deve ter seus itens separados por vírgula.
Se quiser que uma ação seja realizada a cada 10 minutos, diariamente, a linha pode ser a seguinte:
0,10,20,30,40,50 * * * * /bin/exemplo
Lembre-se de sempre indicar o caminho completo do arquivo executável que deve ser acessado pelo cron. Note também que o espaço é que determina a mudança de campo na linha (minutos, horas, dia etc) e, portanto, as vírgulas e os hífens devem ser usados sem espaço.
Depois de pronto, basta salvar o arquivo e sair do editor. Se estiver no Nano, use Ctrl + O seguido de Enter para salvar, e Ctrl + X para sair. No Vim, pressione Esc para sair do modo de edição e, em seguida, digite :wq e pressione Enter.
Independentemente do editor usado, o cron anunciará na linha de comando a seguinte frase: "crontab: installing new crontab". Isso significa que suas novas configurações foram adicionadas com sucesso.
No modo gráfico
Caso prefira o conforto das janelas e cliques do mouse, saiba que o Ubuntu possui um cliente gráfico para agendar tarefas pelo cron. Basta instalar o pacote gnome-schedule e seguir os assistentes para a configuração do software.