Construa um Agendador de Tarefas Usando Bash

LinuxBeginner
Pratique Agora

Introdução

Este projeto irá guiá-lo através da criação de um agendador de tarefas usando um script Bash. O agendador de tarefas permite que você agende e gerencie tarefas a serem executadas em intervalos especificados, como a cada hora, diariamente ou semanalmente. O script oferece opções para listar tarefas agendadas, adicionar novas tarefas e remover tarefas existentes.

👀 Pré-visualização

Task scheduler script preview

Para começar, você precisará criar um arquivo chamado task_scheduler.sh e escrever o código fornecido nele. Vamos prosseguir para o primeiro passo.

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como criar os arquivos do projeto
  • Como adicionar código para exibir tarefas agendadas
  • Como adicionar código para adicionar uma nova tarefa
  • Como adicionar código para remover uma tarefa
  • Como configurar o loop do menu principal
  • Como tornar o script executável
  • Como executar o projeto

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Criar um script Bash
  • Usar o crontab para agendar tarefas
  • Solicitar entrada do usuário em um script Bash
  • Adicionar e remover tarefas do crontab
  • Criar um loop de menu em um script Bash
  • Tornar um script Bash executável e executá-lo

Criar os arquivos do projeto

Crie um novo arquivo chamado task_scheduler.sh usando um editor de texto de sua escolha. Você pode usar o seguinte comando para criar o arquivo:

cd ~/project
touch task_scheduler.sh

Agora, abra o arquivo em seu editor de texto.

Adicionar código para exibir as tarefas agendadas

Instale o crontab se ele ainda não estiver instalado em seu sistema. Para instalar o crontab, execute o seguinte comando no terminal:

sudo apt-get update
sudo apt-get install cron

Dentro do arquivo task_scheduler.sh, adicione o seguinte código:

#!/bin/bash

## Function to display the scheduled tasks
list_tasks() {
  echo "Scheduled tasks:"
  crontab -l
  echo
}

Este código define uma função chamada list_tasks, que exibe as tarefas agendadas usando o comando crontab -l.

Adicionar código para adicionar uma nova tarefa

Abaixo do código adicionado anteriormente, adicione o seguinte código:

## Function to add a new task
add_task() {
  read -p "Enter the command or script to be executed: " command
  read -p "Enter the schedule (hourly, daily, weekly): " schedule
  read -p "Enter any additional parameters: " parameters

  case $schedule in
    hourly)
      cron_schedule="0 * * * *"
      ;;
    daily)
      cron_schedule="0 0 * * *"
      ;;
    weekly)
      cron_schedule="0 0 * * 0"
      ;;
    *)
      echo "Invalid schedule. Please choose hourly, daily, or weekly."
      return
      ;;
  esac

  ## Add the task to the crontab
  (
    crontab -l 2> /dev/null
    echo "$cron_schedule $command $parameters"
  ) | crontab -

  echo "Task scheduled successfully."
  echo
}

Este código define uma função chamada add_task, que solicita ao usuário que insira o comando ou script a ser executado, a programação (horária, diária ou semanal) e quaisquer parâmetros adicionais. Em seguida, define a programação cron apropriada com base na programação escolhida. Finalmente, adiciona a tarefa ao crontab usando o comando crontab -l.

Adicionar código para remover uma tarefa

Abaixo do código adicionado anteriormente, adicione o seguinte código:

## Function to remove a task
remove_task() {
  read -p "Enter the command or script to be removed: " command

  ## Remove the task from the crontab
  crontab -l | grep -v "$command" | crontab -

  echo "Task removed successfully."
  echo
}

Este código define uma função chamada remove_task, que solicita ao usuário que insira o comando ou script a ser removido. Em seguida, remove a tarefa do crontab usando o comando crontab -l.

Adicionar código para o loop do menu principal

Abaixo do código adicionado anteriormente, adicione o seguinte código:

## Main menu loop
while true; do
  echo "Task Scheduler"
  echo "1. List scheduled tasks"
  echo "2. Add a task"
  echo "3. Remove a task"
  echo "4. Exit"
  read -p "Enter your choice: " choice
  echo

  case $choice in
    1)
      list_tasks
      ;;
    2)
      add_task
      ;;
    3)
      remove_task
      ;;
    4)
      break
      ;;
    *)
      echo "Invalid choice. Please try again."
      echo
      ;;
  esac
done

Este código configura um loop de menu principal que exibe repetidamente um menu e solicita ao usuário sua escolha. Com base na opção escolhida, ele chama a função correspondente (list_tasks, add_task ou remove_task) ou sai do loop.

Salvar e fechar o arquivo

Salve as alterações no arquivo task_scheduler.sh e feche o editor de texto.

Para tornar o script executável, execute o seguinte comando no terminal:

chmod +x task_scheduler.sh

Este comando define a permissão de execução para o arquivo task_scheduler.sh.

Executar o projeto

Para executar o agendador de tarefas, execute o seguinte comando no terminal:

./task_scheduler.sh

Este comando executa o script task_scheduler.sh e inicia o agendador de tarefas. Siga as instruções na tela para listar tarefas agendadas, adicionar novas tarefas ou remover tarefas existentes.

Saída do terminal do agendador de tarefas

Resumo

Parabéns! Você concluiu com sucesso o projeto do agendador de tarefas. Você criou um script Bash que permite agendar e gerenciar tarefas. O script oferece opções para listar tarefas agendadas, adicionar novas tarefas e remover tarefas existentes. Sinta-se à vontade para personalizar o script ainda mais para atender às suas necessidades específicas. Boas programações!

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar