Fazer a entrega diária de um documento ou realizar determinados processos no fim do expediente são tarefas comuns na rotina de trabalho. Contudo, essas atividades corriqueiras, embora importantes, são muito passíveis de esquecimento — é por isso que o Linux disponibiliza a ferramenta Crontab.
O Crontab nos permite agendar as tarefas para que elas sejam executadas automaticamente. O usuário pode, por exemplo, configurar o sistema para que um lembrete seja impresso na tela com a frequência de dias e horários que ele quiser. O mesmo pode ser feito para agendar scripts e comandos do Linux.
Quer saber mais sobre o Crontab e sua utilidade para ambientes de trabalho? Confira, neste artigo, como funciona o serviço e suas configurações, bem como exemplos práticos de uso.
Entendendo o que é Crontab
Antes de explorar o Crontab, é necessário apresentar a você o Cron. Trata-se de um programa do Linux executável em segundo plano (ou seja, um daemon), capaz de executar tarefas automaticamente.
Como o serviço funciona? Quando iniciado, o Cron faz uma varredura (a cada minuto) pelos diretórios que possam conter arquivos nos quais estão guardados os scripts agendados pelo usuário.
O propósito da examinação não é somente o de encontrar tarefas novas, mas, principalmente, de saber se há alguma atividade programada para o momento.
Vale destacar, também, que o Cron é um programa de nível multiusuário. Isso significa que cada usuário pode agendar suas tarefas individualmente, graças ao próprio arquivo onde são armazenados os scripts: o Crontab.
Sim, o Crontab é uma ferramenta para gerar arquivos a serem lidos pelo Cron. Como o próprio nome diz, a estrutura do Crontab consiste em tabelas. Nessas tabelas são preenchidas todas as informações referentes à tarefa:
- minutos;
- horas;
- dias do mês;
- mês;
- dias da semana;
- usuário; e
- comando.
Portanto, quando o arquivo Crontab é gerado, o Cron faz a identificação dele e, em seguida, interpreta os dados e parâmetros registrados na tabela. Nitidamente, o Cron e o Crontab se baseiam na ideia de operador e cronograma de trabalho (ou o humano e sua agenda, se preferir).
Opções de configuração do Crontab
A configuração padrão para arquivos do Cron está localizada no arquivo /etc/crontab, a qual apresenta as seguintes informações:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
A primeira linha (SHELL) determina o sistema em que o ambiente Shell será usado. A variável PATH é onde está definido o caminho usado para executar comandos.
Em MAILTO, o usuário tem a opção de receber e-mails de saída do Cron; caso não deseja recebê-los, marque como MAILTO=””. Por fim, o HOME permite configurar um diretório “home” para executar comandos e scripts.
Cada uma das demais linhas representa uma tarefa. Para interpretá-la, é necessário entender a sintaxe do Crontab, conforme veremos a seguir.
Primeiramente, dividimos as informações em seis partes (da esquerda para a direita):
Minuto (0 a 59) | Hora (0 a 23) | Dia (1 a 31) | Mês (1 a 12)| Dia da semana (0 a 7) | Comando (comando a ser executado).
Ou seja, para cada campo será digitado um valor correspondente às regras acima. Detalhe: o dia da semana oferece oito possibilidades, sendo que os valores 0 e 7 significam domingo.
Observação: na configuração mostrada no início do tópico, nas linhas que representam as tarefas há um elemento chamado “run-parts”. Ele serve para executar scripts naqueles diretórios.
Caracteres especiais e suas funções
Em meio a uma instrução do Crontab é comum que o usuário se depare com alguns caracteres / símbolos que têm funções específicas, como asterisco (*), vírgula (,), hífen (-) e barra (/). Vejamos o que eles significam.
Asterisco
O asterisco serve para especificar que todos os valores do campo serão validados. Vamos supor que um determinado comando tenha de ser executado diariamente durante o mês; para configurar o Crontab, basta inserir o asterisco no campo “Mês”.
Hífen
O sinal de hífen é usado para especificar um intervalo. Por exemplo, se o comando deve ser executado somente em dias úteis (segunda a sexta), o campo “Dia” deve ser preenchido da seguinte maneira: 1-5.
Vírgula
As vírgulas têm a função de listar uma sequência de valores. É uma opção ideal para agendar momentos esporádicos, como uma tarefa a ser executada nos dias 4, 15 e 19 do mês. No caso, o preenchimento do campo “Dia” ficaria: 4, 15, 19.
Barra
A barra frontal (forward slash, do inglês), por sua vez, especifica a etapa dos valores. Supondo que seja inserido o valor 0-55/5 (ou */5), a tarefa será executada a cada cinco minutos.
Hash
Assim como no ambiente de programação, o símbolo hash (#) é usado para adicionar comentários em uma instrução. Deste modo o conteúdo não será processado pela ferramenta.
Fácil de entender, não é mesmo? Por meio dessa sintaxe é possível criar diversos tipos de agendamento pelo Cron, conforme os exemplos que veremos a seguir.
5 exemplos de uso do Crontab
Agora que já falei sobre a função do Contrab de gerar arquivo para o Cron e como fazer as configurações de agendamento, vejamos 5 exemplos de como ele pode ser usado para desempenhar tarefas comuns.
1. Exibição das tabelas do Cron
Usando o comando -l, o arquivo Crontab do usuário será listado no terminal.
crontab -l 55 * * * 5 /bin/sh /home/root/bin/backup.sh
2. Deletar todas as tarefas
Para remover todas as tarefas agendadas no arquivo Crontab do usuário, liste-as usando o comando -l e, depois, use o -r:
crontab -l 55 * * * 5 /bin/sh /home/root/bin/backup.sh crontab -r crontab -l
no crontab for root
4. Editar o arquivo Crontab
Quer editar um arquivo Crontab? Utilize o comando crontab -e. Automaticamente, um editor será aberto.
# crontab -e 31 06 * * 4 /bin/sh /home/root/bin/alerta-user ~ ~ /tmp/crontab.8fjist 5. Executar o script usando PHP
O comando “crontab -e” pode ser acionado, inclusive, para executar um script usando PHP. Para executar “script-exemplo.php” a cada uma hora, faça o seguinte:
# crontab -e 00 * * * * /usr/local/bin/php /home/root/script-exemplo.php
Observação: para que esta dica funcione é necessário ter acesso ao shell do Linux. Se você estiver navegando em um servidor limitado ao FTP para salvar documentos, o script deverá ser executado usando uma URL — para aprender como fazê-lo, recomendo a leitura deste artigo.
Considerando essas e outras possibilidades do Crontab, conclui-se que o serviço é bastante útil para prevenir-se a falhas e, de quebra, automatizar tarefas que tomam atenção e tempo dos colaboradores.
Após aprender sobre tudo o que abordei no artigo, o quanto você acredita que o Crontab será útil para a sua carreira?
Sempre lembrando que a oportunidade de se aprimorar no sistema Linux (significativamente) está a um clique. Acesse agora mesmo uma aula de dentro da formação completa, Profissionais Linux e descubra como dominar o sistema.