Se você precisa programar tarefas recorrentes, como backups automáticos ou atualizações de banco de dados, você pode usar o Cron, um utilitário de linha de comando disponível em sistemas operacionais baseados em Unix, como Linux e macOS.
Nesse post vou apresentar 2 maneiras de agendar uma tarefa no crontab:
1. Através do comando crontab:
1.1. Sintaxe básica:
crontab [opções]
-u: define o usuário (se não utilizar esse parâmetro, ele usa o usuário atual).
-e: edita as tarefas da cron.
-l: lista as tarefas da cron.
1.2. Alguns exemplos:
Editar o crontab para o usuário “exemplo”:
crontab -u exemplo -e
Listar a lista de agendamento para o usuário “exemplo”:
crontab -u exemplo -l
1.3. Adicionando uma tarefa:
Primeiro entre no arquivo de configuração da cron do usuário “exemplo”:
crontab -u exemplo -e
Agora adicione a tarefa deseja, para ajudar vou disponibilizar um exemplo:
# Exemplo de definição de tarefa:
# . minuto (0 59)
# | . hora (0 23)
# | | . dia do mês (1 31)
# | | | . mês (1 12)
# | | | | . dia da semana (0 6)
# | | | | | . comando
# * * * * * *
10 10 * * * echo "Hello world"
No exemplo acima agendei uma tarefa para todos os dias as 10 horas e 10 minutos e o comando agendado é:
echo "Hello world".
Depois de agendada a tarefa, reinicie o serviço crond:
/etc/init.d/crond restart
Obs: Você pode copiar essas linhas e sempre utilizar esse modelo para editar suas tarefas.
2. Editando o arquivo /etc/crontab:
Em vez de usar o comando crontab para cada vez que for adicionar uma nova tarefa, é possível utilizar o arquivo /etc/crontab para centralizar suas tarefas.
2.1. Visualizando tarefas já criadas:
cat /etc/crontab
2.2 Entre no arquivo de configuração /etc/crontab:
vim /etc/crontab
Agora adicione a tarefa deseja, preste atenção que nesse modelo você deve especificar o usuário que realizara a tarefa. Segue o exemplo:
# Exemplo de definição de tarefa:
# . minuto (0 59)
# | . hora (0 23)
# | | . dia do mês (1 31)
# | | | . mês (1 12)
# | | | | . dia da semana (0 6)
# | | | | | . usuário
# | | | | | | . comando
# * * * * * * *
10 10 * * * exemplo echo "Hello world"
No exemplo acima agendei uma tarefa para o usuário “exemplo” todos os dias as 10 horas e 10 minutos e o comando agendado é:
echo "Hello world".
Depois de agendada a tarefa, reinicie o serviço crond:
/etc/init.d/crond restart
Você pode copiar essas linhas e sempre utilizar esse modelo para editar suas tarefas.
Qual o melhor?
Na minha opinião a segunda opção é melhor, pois fica tudo centralizado e fica mais fácil para editar e listar as tarefas agendadas.
Onde ficam os logs?
Nos 2 exemplos apresentados, o arquivo de log de execução das tarefas fica em /var/log/cron. Para poder ler o arquivo você pode usar o comando abaixo:
cat /var/log/cron
3. Gerador Online de Cron.
A sintaxe do Cron pode ser complicada de entender e gerenciar, especialmente para usuários iniciantes.
Para tornar essa tarefa mais fácil, você pode usar um gerador de cron online, que permite que você especifique facilmente quando uma tarefa deve ser executada. Existem muitas opções disponíveis na internet, mas uma ferramenta que recomendamos é o Crontab Guru.
https://crontab.guru/
Qualquer duvida estou a disposição.