A automação de tarefas no Linux representa uma habilidade essencial para administradores de sistema e desenvolvedores. Combinar scripts Bash com o agendador Cron oferece uma solução robusta para eliminar processos manuais repetitivos e reduzir erros operacionais.

Fundamentos do Bash Scripting

O Bash (Bourne Again Shell) é o interpretador de comandos padrão na maioria das distribuições Linux. Scripts Bash permitem automatizar sequências complexas de comandos, manipular arquivos, processar dados e controlar fluxos de trabalho.

Um script básico para limpeza de arquivos temporários seria:

!/bin/bash

Script de limpeza de arquivos temporários

echo "Iniciando limpeza de arquivos temporários..."

Limpa diretório /tmp

find /tmp -type f -atime +7 -delete

Limpa logs antigos

find /var/log -name "*.log" -mtime +30 -delete echo "Limpeza concluída em $(date)"

Para tornar o script executável, use o comando:

chmod +x cleanTemp.sh

Configuração e Sintaxe do Cron

O Cron executa tarefas agendadas através de entradas no arquivo crontab. Cada linha segue o formato: minuto hora dia mês dia_da_semana comando.

FormatoDescrição
A cada minuto
0 2 Diariamente às 2h
0 0 0Domingos à meia-noite
30 14 1 Todo dia 1 às 14h30
0 /6 A cada 6 horas

Para editar o crontab do usuário atual:

crontab -e

Exemplo de agendamento para executar nosso script de limpeza toda segunda-feira às 3h:

0 3   1 /home/usuario/scripts/cleanTemp.sh

Scripts Práticos para Automação

Aqui estão exemplos de scripts úteis para diferentes cenários:

Backup Automatizado

!/bin/bash

BACKUP_DIR="/backup" SOURCE_DIR="/home/usuario/documentos" DATE=$(date +"%Y-%m-%d_%H-%M")

Cria backup comprimido

tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"

Remove backups com mais de 7 dias

find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +7 -delete echo "Backup realizado: backup_$DATE.tar.gz"

Monitoramento de Recursos

!/bin/bash

LOG_FILE="/var/log/sistema_monitor.log" DATE=$(date)

Verifica uso de CPU

CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk \'{print $2}\' | cut -d\'%\' -f1)

Verifica uso de memória

MEM_USAGE=$(free | grep Mem | awk \'{printf "%.2f", $3/$2 * 100.0}\')

Log das métricas

echo "$DATE - CPU: ${CPU_USAGE}% | Memória: ${MEM_USAGE}%" >> "$LOG_FILE"

Alerta se CPU > 80%

if (( $(echo "$CPU_USAGE > 80" | bc -l) )); then echo "ALERTA: Alto uso de CPU detectado!" | mail -s "Alerta do Sistema" admin@empresa.com fi

Gerenciamento de Logs e Debugging

Scripts automatizados devem incluir logging adequado para facilitar o debugging:

!/bin/bash

LOG_FILE="/var/log/meu_script.log"

Função de log

log_message() { echo "$(date \'+%Y-%m-%d %H:%M:%S\') - $1" >> "$LOG_FILE" }

Redireciona stdout e stderr para log

exec 1> >(tee -a "$LOG_FILE") exec 2> >(tee -a "$LOG_FILE" >&2) log_message "Script iniciado"

Seu código aqui

if [ $? -eq 0 ]; then log_message "Operação concluída com sucesso" else log_message "ERRO: Falha na execução" fi

Melhores Práticas de Segurança

A automação de tarefas exige cuidados especiais com segurança. Scripts devem validar entradas, usar caminhos absolutos e ter permissões restritivas.

  • Sempre use caminhos absolutos para comandos e arquivos
  • Valide variáveis de entrada antes de usá-las
  • Configure permissões adequadas (chmod 700 para scripts sensíveis)
  • Implemente verificações de erro e tratamento de exceções
  • Evite executar scripts como root quando desnecessário

Para ambientes que exigem maior segurança, considere implementar soluções VPN para proteger conexões remotas ao servidor.

Variáveis de Ambiente Seguras

!/bin/bash

Define variáveis de ambiente para cron

export PATH="/usr/local/bin:/usr/bin:/bin" export HOME="/home/usuario"

Valida se arquivo existe antes de processar

if [ ! -f "$1" ]; then echo "Erro: Arquivo $1 não encontrado" >&2 exit 1 fi

Processa apenas se variável não estiver vazia

if [ -n "$DATABASE_URL" ]; then

Executa operação no banco

mysql -h localhost -u user -p"$DB_PASSWORD" < script.sql fi

Monitoramento e Manutenção

Scripts automatizados requerem monitoramento contínuo. Configure alertas para falhas e revise logs regularmente.

Para verificar o status de tarefas cron:

Visualiza crontab atual

crontab -l

Verifica logs do cron

tail -f /var/log/cron

Lista processos em execução

ps aux | grep nome_script

Considere implementar dashboards de monitoramento em servidores VPS dedicados para acompanhar o desempenho de suas automações.

Troubleshooting Comum

Problemas frequentes incluem variáveis de ambiente não definidas, permissões incorretas e caminhos relativos que falham no contexto do cron.

Para debug de scripts cron, adicione esta linha no início:

!/bin/bash

set -x

Ativa debug mode

set -e

Para execução em caso de erro

A automação eficiente com Bash e Cron transforma a administração de sistemas Linux, proporcionando maior confiabilidade e liberando tempo para tarefas estratégicas. A implementação adequada dessas ferramentas resulta em ambientes mais estáveis e operações otimizadas.