Neste artigo, vamos revisar e ver como podemos agendar e executar tarefas do Linux em segundo plano automaticamente a intervalos regulares usando o comando Crontab.
lidar com um trabalho frequente manualmente é uma tarefa difícil para administradores de sistemas e tais tarefas podem ser agendadas e executadas automaticamente em segundo plano sem intervenção humana usando o demônio cron no Linux ou sistema operacional Unix-like.
Você pode automatizar backup do sistema Linux, agendar atualizações, e sincronização de arquivos, e muitos mais usando o daemon Cron, que é utilizado para executar tarefas agendadas a partir da linha de comando ou utilizar ferramentas online para gerar trabalhos cron.
Cron desperta a cada minuto e verifica tarefas agendadas de forma contável – Crontab (TABela CRON) é uma tabela onde podemos agendar esse tipo de tarefas repetidas.
Dicas: Cada usuário pode ter seu próprio crontab para criar, modificar e excluir tarefas. Por padrão, o cron está habilitado para os usuários, no entanto, podemos restringir usuários adicionando uma entrada no arquivo /etc/cron.deny.
Crontab no Linux
O arquivo Crontab consiste em comandos por linha e possui seis campos, na verdade, e são separados por espaço ou tabulação. Os cinco primeiros campos representam o tempo para executar tarefas e o último campo é para o comando.
- Minuto (aceita valores entre 0-59)
- Hora (aceita valores entre 0-23)
- Dia do Mês (aceita valores entre 1-31)
- O mês do ano (mantém valores entre 1-12 ou Jan-Dec, você pode usar as três primeiras letras do nome de cada mês, ou seja, Jan ou Jun.)
- Dia da semana (mantém valores entre 0-6 ou Sun-Sat, Aqui também você pode usar as três primeiras letras do nome de cada dia, ou seja, Sun ou Wed. )
- Comando – O /caminho/para/comando ou script que deseja agendar.
1. Listar Entradas do Crontab
Liste ou gerencie a tarefa com o comando crontab com a opção -l
para o usuário atual.
# crontab -l 00 10 * * * /bin/ls >/ls.txt
2. Editar Entradas do Crontab
Para editar a entrada do crontab, use a opção -e
mostrada abaixo. O exemplo abaixo abrirá os trabalhos agendados no editor VI. Faça as alterações necessárias e saia pressionando as teclas :wq
que salvam as configurações automaticamente.
# crontab -e
3. Listar Trabalhos Cron Agendados do Usuário
Para listar os trabalhos agendados de um usuário específico chamado tecmint usando a opção -u
(Usuário) e -l
(Listar).
# crontab -u tecmint -l no crontab for tecmint
Nota: Somente o usuário root tem privilégios completos para ver as entradas do crontab de outros usuários. Usuários normais não podem visualizar os de outros.
4. Remover Entrada do Crontab
Cuidado: O crontab com o parâmetro -r
removerá todos os trabalhos agendados sem confirmação do crontab. Use a opção -i
antes de excluir o crontab do usuário.
# crontab -r
5. Solicitar Antes de Excluir o Crontab
O crontab com a opção -i
solicitará confirmação do usuário antes de excluir o crontab do usuário.
# crontab -i -r crontab: really delete root's crontab?
6. Caracteres Especiais Permitidos (*, -, /, ?, #)
- Asterisco(*) – Corresponde a todos os valores no campo ou a qualquer valor possível.
- Hífen(-) – Para definir um intervalo.
- Barras (/) – 1º campo /10 significa a cada dez minutos ou incremento de intervalo.
- A Vírgula (,) – Para separar itens.
7. Programação do Cron em Todo o Sistema
A system administrator can use the predefined cron directory as shown below.
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. Agendar um Trabalho para um Horário Específico
Os trabalhos abaixo excluem arquivos e diretórios vazios de /tmp às 12:30 da manhã diariamente. Você precisa mencionar o nome de usuário para executar o comando crontab. No exemplo abaixo, o usuário root está realizando um trabalho cron.
# crontab -e 30 0 * * * root find /tmp -type f -empty -delete
9. Strings Especiais para Programações Comuns
Strings | Meanings |
---|---|
@reboot | The command will run when the system reboots. |
@daily | Once per day or may use @midnight. |
@weekly | Once per week. |
@yearly | Once per year. we can use the @annually keyword also. |
É necessário substituir cinco campos do comando cron por palavras-chave se desejar usar o mesmo.
10. Comandos Múltiplos com Duplo E Comercial(&&)
No exemplo abaixo, o comando1 e o comando2 são executados diariamente.
# crontab -e @daily <command1> && <command2>
11. Desativar Notificações por Email.
Por padrão, o cron envia e-mails para a conta de usuário que executa o cronjob. Se você deseja desativá-lo, adicione seu trabalho cron conforme o exemplo abaixo. Usar a opção >/dev/null 2>&1 no final do arquivo redirecionará toda a saída dos resultados do cron para /dev/null.
[root@tecmint ~]# crontab -e * * * * * >/dev/null 2>&1
Conclusão: A automação de tarefas pode nos ajudar a realizar nossas tarefas de maneira melhor, sem erros e de forma eficiente. Você pode consultar a página do manual do crontab para obter mais informações digitando o comando ‘man crontab‘ no seu terminal.
Source:
https://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/