Este post tem a pretensão de dar uma rápida introdução ao cron — e cobrir o básico de tudo o que ele é capaz de fazer para você.
O que é o cron?
Cron é o nome do programa que permite aos usuários do Unix/Linux executar comandos ou scripts (grupos de comandos) automaticamente em um determinado horário/data.
É comumente usado pelos administradores de sistemas para programar a execução de suas tarefas administrativas – como o backup.
Vamos ver, aqui, como funciona o Cron.
Como iniciar o cron
cron é um daemon, o que significa que ele é um serviço que é iniciado uma vez (usualmente, quando o sistema é ligado), entra em stand by e, na hora certa, executa a(s) tarefa(s) programada(s) – usualmente, em background, ou seja, nos bastidores do sistema.
Outro exemplo de daemon é o servidor FTP, que fica em stand by, quando não está sendo usado.
Como usar o cron
Dentro do diretório /etc/, é possível encontrar subdiretórios chamados cron.hourly/, cron.weekly/, cron.daily/, cron.monthly/. O princípio é simples, assim – ao copiar um script para dentro de um destes diretórios, ele será executado a cada hora (hourly), a cada semana(weekly), a cada mês (monthly). A frequência com que o script será executado, depende do nome do diretório, portanto.
cat/etc/crontab
Explicando o arquivo crontab
As primeiras linhas, do arquivo, definem algumas variáveis usadas pelo cron. A segunda parte é a que exige um pouco mais de atenção. Vamos usar tabela para explicar a linha
# m h dom mon dow user command |
Item | Descrição |
---|---|
m ou minute | minuto – determina a quantos minutos, dentro de uma hora, o comando será executado. Os valores aceitos vão de 0 a 59. |
h ou hour | hora – determina a que hora o comando será executado e sua especificação segue o padrão 24h. Portanto, aceita valores entre 0 e 23 (sendo que 0 é meia-noite). |
dom ou day of month |
dia do mês – determina o dia do mês em que o comando será executado. Se quiser que a tarefa seja executada no dia 25 do mês, use o valor 25. |
mon ou month | mês – determina o mês em que o comando será executado. Aceita tanto valores numéricos referentes aos meses do ano, como alfabéticos (e. g. August). |
dow ou day of week | dia da semana – aceita tanto valores numéricos de 0 a 7, como caracteres: sun, mon, tue, wed, thu, fri e sat, que correspondem, respectivamente a domingo, segunda, terça, quarta, quinta, sexta e sábado. |
user | usuário – determina o usuário do sistema sob cujos privilégios o comando irá ser executado |
cmd ou command | comando – determina o comando a ser executado. |
Notas:
- Nos campos em que você não deseja fixar valor algum, pode inserir um asterisco ‘*’.
- No campo dow, dia da semana, tanto 0 como 7 correspondem a domingo
- Caso você determine valores para dom e para dow, o sistema não entra em conflito. O cron executa o comando nos dois casos
- O Vixie Cron aceita listas. O que significa que você pode enumerar especificamente, por exemplo, os dias da semana em que você deseja que um script seja disparado. Veja um exemplo:
- Se você preferir, pode usar assim:
- Você também pode “pular” números. Veja como:
- se você usar o valor */2 no campo dom, o comando irá rodar a cada 2 dias.
- */5, no campo de horas, fará com que o comando seja executado a cada 5 horas
- Os nomes dos meses e dos dias da semana não são sensíveis à caixa. Ou seja, tanto faz escrever Jul como jul. O importante é que você use apenas as 3 primeiras letras do dia da semana ou do nome do mês.
- Você pode (e deve) inserir comentários para explicar o que está fazendo. Para isto, basta usar um ‘#’ no início da linha comentada.
O crontab é multiusuário
O Unix é um sistema, por natureza, multiusuário. Cada usuário que se conecta ao sistema pode, em tese, programar as próprias tarefas a serem executadas pelo sistema.
Assim, você, que tem um blog WordPress instalado em um servidor – que te forneça acesso SSH – pode programar um backup e determinar a frequência com que ele irá ocorrer.
Para começar a personalizar o seu próprio crontab, use o comando:
crontab -e
O sistema irá abrir o seu editor de textos padrão.
Se você quiser usar o vim também, para editar o crontab execute o seguinte comando:
vim /etc/crontab
Note que o seu crontab “particular” segue os padrões do arquivo /etc/crontab do sistema.
Uma vez terminada a edição, o cron faz a verificação sintática e permite corrigir possíveis erros. Se tudo estiver bem, é só deixar rolar.
Outros editores de texto
Usuários que se sintam mais confortáveis com outros editores de texto, podem fazer a edição no aplicativo da sua preferência.
Depois de concluído, é só usar o comando crontab para substituir o seu arquivo crontab atual pelo arquivo que você acabou de criar.
59 11 * * 1-5 root backup.sh
onde 1 – 5 significa de segunda a sexta