Neste artigo, vamos revisar e ver como podemos agendar e executar tarefas do Linux em segundo plano automaticamente em intervalos regulares usando o comando Crontab.
Lidar com um trabalho frequente manualmente é uma tarefa assustadora para os administradores do sistema e tarefas assim podem ser agendadas e executadas automaticamente em segundo plano sem intervenção humana usando o daemon cron no sistema operacional Linux ou Unix-like.
Você pode automatizar o backup do sistema Linux, agendar atualizações, e sincronização de arquivos, e muito mais usando o daemon Cron, que é usado para executar tarefas agendadas a partir da linha de comando ou usar ferramentas online para gerar trabalhos cron.
Cron acorda a cada minuto e verifica tarefas agendadas de forma contável – Crontab (TABela de 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, cron está habilitado para 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 separados por espaço ou tabulação. Os cinco primeiros campos representam o horário para executar tarefas e o último campo é para o comando.
- Minuto (valores entre 0-59)
- Hora (valores entre 0-23)
- Dia do Mês (valores entre 1-31)
- O mês do ano (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 (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á 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 Cron Jobs Agendados do Usuário
Para listar 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
Observação: Apenas o usuário root tem privilégios completos para ver as entradas do crontab de outros usuários. Usuários normais não podem ver os de outros.
4. Remover Entrada do Crontab
Cuidado: O crontab com o parâmetro -r
removerá trabalhos agendados completos 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
crontab com a opção -i
solicitará confirmação do usuário antes de excluir a 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 qualquer valor possível.
- Hífen(-) – Para definir um intervalo.
- Barra (/) – 1º campo /10 significa a cada dez minutos ou incremento do intervalo.
- A Vírgula (,) – Para separar itens.
7. Cronograma do Sistema Global
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 uma Tarefa para um Horário Específico
As tarefas abaixo excluem arquivos e diretórios vazios de /tmp às 12h30 diariamente. Você precisa mencionar o nome de usuário para executar o comando crontab. No exemplo abaixo, o usuário root está realizando uma tarefa cron.
# crontab -e 30 0 * * * root find /tmp -type f -empty -delete
9. Strings Especiais para Cronograma Comum
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. Múltiplos Comandos 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 E-mail.
Por padrão, o cron envia e-mails para a conta de usuário que executa a tarefa cron. Se você deseja desativá-lo, adicione sua tarefa cron semelhante ao 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 atividades de maneira mais eficiente e sem erros. 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/