Pular para o conteúdo
Início » Aprendendo Linux Parte 5 – Agendamento de Tarefas no Linux com cron e at

Aprendendo Linux Parte 5 – Agendamento de Tarefas no Linux com cron e at

O agendamento de tarefas é uma parte essencial da administração de sistemas no Linux. Ele permite que você automatize tarefas repetitivas, execute scripts em horários específicos e gerencie a manutenção do sistema de forma eficiente. Nesta aula, exploraremos duas ferramentas principais de agendamento: cron e at.

Agendamento de Tarefas com cron

O cron é uma ferramenta de agendamento poderosa e flexível, usada para executar tarefas em intervalos regulares (minutos, horas, dias, semanas, meses). O cron utiliza arquivos de configuração chamados “crontabs” para definir as tarefas agendadas.

Estrutura do Crontab

A estrutura básica de uma linha no arquivo crontab é composta por cinco campos seguidos pelo comando a ser executado:

* * * * * comando
| | | | |
| | | | +-- Dia da semana (0-7) (Domingo é 0 ou 7)
| | | +---- Mês (1-12)
| | +------ Dia do mês (1-31)
| +-------- Hora (0-23)
+---------- Minuto (0-59)
Gerenciando o Crontab

Para editar o crontab do usuário atual, use o comando:

$ crontab -e

Isso abrirá o editor de texto padrão para editar o arquivo crontab. Aqui estão alguns exemplos de entradas no crontab:

  • Executar um script todos os dias às 2:30 AM:
30 2 * * * /caminho/para/script.sh
  • Executar um comando a cada 5 minutos:
*/5 * * * * /caminho/para/comando
  • Executar um script todas as segundas-feiras às 7:00 AM:
0 7 * * 1 /caminho/para/script.sh
Visualizando Tarefas Agendadas

Para visualizar as tarefas agendadas no crontab do usuário atual, use:

$ crontab -l

Para visualizar o crontab de outro usuário (requer privilégios de root):

$ sudo crontab -u nome_do_usuario -l
Removendo Tarefas Agendadas

Para remover todas as tarefas agendadas no crontab do usuário atual:

$ crontab -r

Para remover o crontab de outro usuário:

$ sudo crontab -u nome_do_usuario -r

Agendamento de Tarefas com at

O at é usado para agendar uma tarefa para ser executada uma vez, em um horário específico no futuro. É útil para tarefas que precisam ser executadas apenas uma vez.

Estrutura Básica do Comando at

Para agendar uma tarefa, use o comando at seguido pelo horário desejado:

$ at 14:30

Isso abrirá um prompt at onde você pode digitar o comando a ser executado. Depois de digitar o comando, pressione Ctrl + D para finalizar a entrada.

Exemplo de Uso do at
  1. Agendar um script para ser executado às 3:00 PM:
$ at 15:00
at> /caminho/para/script.sh
at> <Ctrl + D>
  1. Agendar um comando para ser executado em 2 horas a partir de agora:
$ at now + 2 hours
at> /caminho/para/comando
at> <Ctrl + D>
Visualizando Tarefas Agendadas com at

Para listar todas as tarefas agendadas com at, use o comando:

$ atq
Cancelando Tarefas Agendadas com at

Para cancelar uma tarefa agendada, use o comando atrm seguido pelo número do trabalho listado no atq:

$ atrm 1

Gerenciamento de Logs e Erros

Ao agendar tarefas, é importante redirecionar a saída e os erros para logs, para que você possa monitorar o desempenho das tarefas e solucionar problemas se necessário.

Redirecionamento de Saída e Erros

Você pode redirecionar a saída padrão (stdout) e a saída de erro (stderr) para arquivos de log:

30 2 * * * /caminho/para/script.sh > /caminho/para/logs/script.log 2>&1

Neste exemplo, a saída e os erros do script serão redirecionados para script.log.

Práticas Recomendadas

  • Testar scripts manualmente: Antes de agendar scripts com cron ou at, execute-os manualmente para garantir que funcionam conforme esperado.
  • Usar caminhos absolutos: No crontab, sempre use caminhos absolutos para comandos e scripts para evitar problemas relacionados ao ambiente do cron.
  • Documentar tarefas agendadas: Mantenha um registro das tarefas agendadas e seus propósitos, facilitando a manutenção e a resolução de problemas.

Exemplos Práticos

Exemplo 1: Backup Diário de Arquivos

Suponha que você queira agendar um script de backup para ser executado diariamente às 3:00 AM. Primeiro, crie o script de backup:

#!/bin/bash
tar -czf /backup/arquivos_$(date +\%F).tar.gz /diretorio/origem

Torne o script executável:

$ chmod +x /caminho/para/backup.sh

Agende a tarefa no crontab:

$ crontab -e
30 3 * * * /caminho/para/backup.sh > /caminho/para/logs/backup.log 2>&1
Exemplo 2: Limpeza Semanal de Logs

Para agendar um script que limpa logs antigos todas as segundas-feiras às 4:00 AM:

Crie o script de limpeza:

#!/bin/bash
find /caminho/para/logs/ -type f -name "*.log" -mtime +7 -exec rm {} \;

Torne o script executável:

$ chmod +x /caminho/para/limpeza_logs.sh

Agende a tarefa no crontab:

$ crontab -e
0 4 * * 1 /caminho/para/limpeza_logs.sh > /caminho/para/logs/limpeza_logs.log 2>&1

O agendamento de tarefas com cron e at é uma habilidade vital para a administração de sistemas Linux. Essas ferramentas permitem automatizar tarefas repetitivas e garantir que tarefas críticas sejam executadas em horários específicos. Pratique o uso de cron e at para dominar o agendamento de tarefas e otimizar a administração do seu sistema.

Marcações: