31.01.2025

Como automatizar tarefas regulares com o Cron no CentOS 8

O Cron é um serviço que é executado em segundo plano e inicia tarefas configuradas em um cronograma. Isso o torna muito útil para a manutenção do servidor. Neste tutorial, daremos uma olhada em como automatizar tarefas comuns usando o cron no CentOS 8.

Instalando o cron no CentOS 8

O cron está presente no CentOS 8 por padrão. Se, por algum motivo, ele não estiver presente, você poderá instalá-lo com o comando:

dnf install crontabs

Agora vamos executá-lo e adicioná-lo à inicialização:

systemctl enable --now crond.service

Configurações básicas do cron

Para ajustar o tempo e a frequência de execução das tarefas, existe o comando crontab. Falaremos sobre ele mais tarde. Além disso, existem as seguintes pastas para facilitar a adição de tarefas:

  • /etc/cron.hourly
  • /etc/cron.daily
  • /etc/cron.weekly
  • /etc/cron.monthly

Os scripts localizados neles são executados com a frequência especificada. Para funcionar com êxito, os scripts devem ter direitos de execução e não devem conter pontos em seus nomes.

Por padrão, qualquer usuário pode criar tarefas. Para permitir a criação de tarefas para determinados usuários, adicione-os ao arquivo /etc/cron.allow. Para todos os outros, o acesso será negado.

Para restringir essa capacidade a um usuário específico, basta adicionar o login dele ao arquivo /etc/cron.deny.

O Cron grava os logs no seguinte arquivo: /var/log/cron.

Ajuste fino das tarefas do cron

Para gerenciar tarefas com a capacidade de especificar a hora exata e a frequência de execução, use o comando:

crontab -e

A configuração do agendador será aberta em seu editor de texto padrão (geralmente o vi). Para configurar outro editor de texto padrão, use o comando (insira seu editor de texto favorito em vez do "nano"):

export EDITOR=nano

Para exibir as configurações atuais do cron, execute:

crontab -l

Para exibir as configurações do cron de outro usuário, digite:

crontab -u user -l

Para editar:

crontab -u user -e

O uso do comando crontab fornece uma verificação de sintaxe ao salvar para evitar erros. É por isso que é melhor usar esse comando para configurar o cron. Para obter informações, o arquivo do agendador pode ser editado diretamente. Ele está localizado em /var/spool/cron/.

Também vale a pena observar que as tarefas atribuídas serão executadas em nome do usuário que as adicionou ao cron.
Os arquivos cron usam a seguinte sintaxe:

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed

O sinal * significa todos os valores válidos. Exemplo de trabalho do cron:

30 22 15 * * /opt/script.sh

O script /opt/script.sh será executado no dia 15 de cada mês às 22:30.

Caracteres especiais e expressões do cron

Vírgula (,). No cronograma, você pode especificar vários valores separados por vírgulas para executar a mesma tarefa em horários diferentes:

30 22 10,20,30 * *

Com esse registro, a tarefa será iniciada nos dias 10, 20 e 30 de cada mês.
Barra (/). A barra é usada para indicar uma etapa. Por exemplo, a execução de uma tarefa a cada 10 dias terá a seguinte aparência:

30 22 */10 * *

Hífen (-). Para especificar um intervalo de valores, há um hífen. Por exemplo, execução diária do dia 10 ao dia 20 do mês:

30 22 10-20 * *

Variáveis especiais do cron:

  • @reboot - executado na inicialização do sistema
  • @yearly ou @annually - uma vez por ano
  • @monthly - uma vez por mês
  • @weekly - uma vez por semana
  • @daily - uma vez por dia
  • @hourly - a cada hora
  • @midnight - à meia-noite

Exemplo:

@daily /opt/script.sh