Automatização de tarefas com cron
e at
1. Por que precisamos de automatização?
Automatizar tarefas é a base de tudo pra qualquer administrador de sistemas, especialmente em Linux. Imagina trabalhar sem automatização: todo dia de manhã você abre o terminal e digita o mesmo comando pra fazer backup dos seus dados, arquivá-los, enviá-los pro servidor e limpar os logs antigos. Depois de uma semana nesse ritmo, você vai começar a pensar em mudar de profissão... Mas calma, estamos aqui pra te ensinar como fazer da máquina sua parceira fiel.
A aula de hoje é sobre a mágica do tempo e das tarefas. Vamos aprender a automatizar processos no nível do sistema operacional usando ferramentas incríveis como cron
e at
. Esses utilitários economizam um tempão e, às vezes, até nervos.
Automação é o bote salva-vidas pra qualquer tarefa repetitiva. Por exemplo, você tem um script que gera um relatório pro seu chefe. Esse relatório é necessário todo dia às 8:00 da manhã. Em vez de acordar mais cedo pra rodar manualmente o script (e correndo o risco de se distrair com uma xícara de café e esquecer de rodar), você pode configurar o cron
pra fazer isso automaticamente.
cron
— é um utilitário pra tarefas regulares, que se repetem em horários predefinidos.
at
— é uma ferramenta pra tarefas únicas, que precisam rodar em um momento específico.
2. Trabalhando com cron
O que é cron
?
cron
é um daemon (processo do sistema) que roda em segundo plano e executa tarefas programadas em horários específicos. Os cronogramas para essas tarefas são armazenados em arquivos chamados de crontab
— que são arquivos de texto. Cada usuário do sistema pode ter seu próprio crontab
.
Seu primeiro job no cron
É assim que um comando básico para trabalhar com cron
parece:
crontab -e
Este comando abre o crontab
do usuário atual para edição. Você pode adicionar tarefas especificando o formato do cronograma.
Sintaxe do cronograma
Uma linha no crontab
contém seis campos:
* * * * * COMANDO
- - - - -
| | | | └─ Dia da semana (0–7, onde 0 e 7 são domingo)
| | | └── Mês (1–12)
| | └─── Dia do mês (1–31)
| └──── Hora (0–23)
└───── Minuto (0–59)
Exemplo: execute echo "Hello, Linux"
todo dia ao meio-dia:
0 12 * * * echo "Hello, Linux"
Prática: vamos rodar uma tarefa simples
Abra seu
crontab
para edição:crontab -e
Adicione a seguinte linha:
*/5 * * * * echo "Hello, world! The time is $(date)" >> ~/cron_test.log
Essa tarefa vai adicionar uma linha com o horário atual no arquivo
cron_test.log
a cada 5 minutos. Salve o arquivo e saia.Verifique se a tarefa foi iniciada:
tail -f ~/cron_test.log
Após 5 minutos, você deve ver a nova entrada no arquivo.
Visualizando tarefas agendadas
Para verificar suas tarefas atuais:
crontab -l
Removendo tarefas
Para remover todas as tarefas do crontab
:
crontab -r
Exemplos reais de uso do cron
Fazendo backup de arquivos
Por exemplo, se você quiser fazer backup dos arquivos do diretório /var/logs
toda noite às 3 horas:
Crie um script:
#!/bin/bash tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
Configure o cronograma no
crontab
:0 3 * * * /path/to/script.sh
E pronto! Você nunca mais vai esquecer de fazer o backup.
Alerta de uso do sistema
Por exemplo, você quer receber uma notificação se o uso da CPU ultrapassar 80%:
Crie um script:
#!/bin/bash LOAD=$(uptime | awk '{print $10}' | sed 's/,//') if (( $(echo "$LOAD > 0.80" | bc -l) )); then echo "High CPU load: $LOAD" | mail -s "CPU Alert" you@example.com fi
Agende a tarefa:
*/10 * * * * /path/to/cpu_check.sh
3. Trabalhando com at
at
permite executar uma tarefa única em um horário específico. Diferente do cron
, as tarefas do at
não se repetem. Isso é útil para tarefas do tipo "faça isso amanhã às 9 da manhã".
Tarefa simples com at
Aqui está um exemplo de como agendar uma tarefa:
echo "echo 'Olá, Linux!'" | at now + 1 minute
Este comando irá executar o comando echo 'Olá, Linux!'
em um minuto.
Você pode especificar um horário e data exatos:
echo "echo 'Backup concluído!'" | at 10:30 AM tomorrow
Gerenciando tarefas do at
Depois de adicionar uma tarefa, você pode visualizar a lista delas:
atq
Exemplo de saída:
1 Tue Oct 31 10:30:00 2023 a user
2 Tue Oct 31 11:00:00 2023 a user
Para remover uma tarefa:
atrm <job_id>
Prática: usando at
para notificações
Crie uma tarefa para notificar em 2 minutos:
echo "notify-send 'O tempo acabou!'" | at now + 2 minutes
Cheque a lista de tarefas:
atq
Aguarde a janela de notificação aparecer em 2 minutos.
4. Erros típicos ao trabalhar com cron
e at
Um dos problemas mais comuns é especificar o caminho errado para o script ou comando. Lembre-se de que o cron
é executado em um ambiente minimizado, então pode não conhecer suas variáveis, como PATH
. A melhor maneira é usar caminhos absolutos.
Por exemplo, se você quiser rodar um script em Python:
*/30 * * * * /usr/bin/python3 /path/to/script.py
Além disso, certifique-se de que o script tem permissão para execução:
chmod +x /path/to/script.sh
Onde isso é útil?
Habilidades de automação são necessárias em quase todas as profissões relacionadas à TI. Você pode usar esse conhecimento:
- Para automatizar tarefas rotineiras do sistema.
- Para configurar backups periódicos.
- Para monitorar o estado de servidores.
- Em entrevistas de emprego, onde frequentemente perguntam sobre
cron
e automação.
Se você trabalha com DevOps, administração de sistemas ou apenas quer ser mais produtivo, entender cron
e at
te ajudará a se destacar e economizar muito tempo.
Agora você sabe como fazer o Linux trabalhar para você. Da próxima vez que alguém reclamar das tarefas repetitivas, apenas sorria, porque você é um mestre da automação!
GO TO FULL VERSION