CodeGym /Cursos /Docker SELF /Automatização de tarefas com cron e at

Automatização de tarefas com cron e at

Docker SELF
Nível 3 , Lição 5
Disponível

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

  1. Abra seu crontab para edição:

    crontab -e
    
  2. 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.

  3. 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:

  1. Crie um script:

    #!/bin/bash
    tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
  2. 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%:

  1. 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
  2. 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

  1. Crie uma tarefa para notificar em 2 minutos:

    echo "notify-send 'O tempo acabou!'" | at now + 2 minutes
    
  2. Cheque a lista de tarefas:

    atq
    
  3. 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!

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION