O cron é um serviço do Linux que permite a execução de tarefas em horários previamente determinado. Esta aplicação é extremamente útil quando temos que executar repetidamente a mesma tarefa.O daemon do cron é executado a cada minuto e quando acionado verifica se há alguma tarefa pendente de ser executada.
Uma das principais formas de se interagir com o cron é por meio do comando crontab, este comando nos permite gerenciar as tarefas que devem ser executadas pelo cron.
Para verificarmos quais tarefas estão agendadas, na crontab, podemos utilizar o comando:
crontab -l
Mas para agendar a execução de uma tarefa precisamos, primeiro, conhecer um pouco sobre a sintaxe dos arquivos de cron.
Sintaxe dos arquivos cron
Vale lembrar que, todas as linhas iniciadas pelo caracter “#” são comentários, estas linhas não possuem um formato previamente definido, mas aquelas que descrevem uma tarefa possuem a seguinte sintaxe:
[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]
Os valores aceitos nestes campos são:
- Minutos: números de 0 a 59;
- Horas: números de 0 a 23;
- Dias do mês: números de 0 a 31;
- Mês: números de 1 (Janeiro) a 12 (Dezembro);
- Dias da semana: números de 0 (Domingo) a 6 (Sábado);
- Usuário: quando uma tarefa é executada, ela deve utilizar os privilégios de um determinado usuário; este campo determina o username deste usuário. Quando um usuário não é especificado será utilizado os privilégios daquele que executou o comando “crontab“
- Comando: especifica a tarefa que deve ser executada.
Vale lembrar que, nos campos numéricos, além dos valores fixos, podemos utilizar algumas notações especiais, por exemplo:
- “*” : utilizado para especificar qualquer valor possível; por exemplo: quando utilizado no campo dia do mês, significa “todos os dias“.
- “x-y”: representa um intervalo, onde “x” é o valor inicial e “y” o valor final; por exemplo: no campo dias da semana, “1-5”, significa de segunda a sexta.
- “5,10,25”: quando utilizamos o caracter “,” (virgula), para separar os números, estamos, geramos uma lista de valores, que indica em quais momentos a tarefa deve ser executada; por exemplo: se utilizássemos os valores indicados no campo dia do mês, a tarefa seria executada no quinto, décimo e vigésimo quinto dia do mês.
- “*/30”: quando utilizamos a combinação de caracteres “*/” seguido de um valor, indicamos que a tarefa deverá ser executada repetidamente no intervalo de tempo especificado; por exemplo, ao utilizar este exemplo na primeira coluna do arquivo de cron, a tarefa será executada a cada 30 minutos
Utilizando o comando crontab
Depois de conhecer a sintaxe utilizada pelos arquivos do cron, apresentaremos alguns dos parâmetros do crontab, que é um dos comando que podem ser utilizados no processo de agendamento de tarefas
A sintaxe básica deste comando é:
crontab [ -u user ] { -e | -l | -r }
Onde:
- -u [user] : define a crontab de qual usuário será manipulada
- -e : permite a edição das tarefas da crontab
- -l : lista o conteúdo da crontab, incluindo os comentário e as linhas de agendamento de tarefas
- -r : remove a crontab
Por exemplo, para listar a crontab do usuário root podemos utilizar o comando:
sudo crontab -l
Que poderia apresentar como resposta algo semelhante á:
# m h dom mon dow command */30 * * * * /usr/bin/webalizer > /dev/null 0 * * * * /usr/bin/apt-mirror */10 * * * * /usr/lib/cgi-bin/awstats.pl -config=/etc/awstats/awstats.conf -update
Agora, supondo que haja um script chamado “atualizar_sistema.sh” localizado no diretório “/opt/script” que deve ser executado no primeiro dia de cada mês as 06:30hs da manhã, poderíamos adicionado à crontab executando o comando:
crontab -e
E em seguida adicionando a linha abaixo no final do arquivo:
30 6 1 * * /opt/script/atualizar_sistema.sh
Apesar do conceito por do cron ser, relativamente, simples, atualmente, esta ferramenta é um dos pilares do sistema operacional Linux. Quase todos os sistemas apoiam-se na cron para realizar algum tipo de agendamento de tarefas; um servidor web baseado no Apche e no PHP, geralmente, utilizar o cron para executar várias atividades, desde a limpeza da cache até a verificação de arquivos de lock perdidos. Conhecer a cron e suas funcionalidade é indispensável para os usuários avançados e os administradores de sistema Linux.