Создать планировщик задач с использованием Bash

LinuxBeginner
Практиковаться сейчас

Введение

В этом проекте вас проведет создание планировщика задач с использованием Bash-скрипта. Планировщик задач позволяет вам планировать и управлять задачами, которые будут выполняться с заданным интервалом, например, каждый час, каждый день или каждую неделю. Скрипт предоставляет варианты перечисления запланированных задач, добавления новых задач и удаления существующих задач.

👀 Предварительный просмотр

Предварительный просмотр скрипта планировщика задач

Для начала вам нужно создать файл с именем task_scheduler.sh и вставить в него предоставленный код. Перейдем к первому шагу.

🎯 Задачи

В этом проекте вы научитесь:

  • Как создавать файлы проекта
  • Как добавить код для отображения запланированных задач
  • Как добавить код для добавления новой задачи
  • Как добавить код для удаления задачи
  • Как настроить главный цикл меню
  • Как сделать скрипт исполняемым
  • Как запускать проект

🏆 Достижения

После завершения этого проекта вы сможете:

  • Создать Bash-скрипт
  • Использовать crontab для планирования задач
  • Запрашивать ввод пользователя в Bash-скрипте
  • Добавлять и удалять задачи из crontab
  • Создавать цикл меню в Bash-скрипте
  • Сделать Bash-скрипт исполняемым и запустить его

Создайте файлы проекта

Создайте новый файл с именем task_scheduler.sh с использованием текстового редактора, который вы предпочитаете. Вы можете использовать следующую команду для создания файла:

cd ~/project
touch task_scheduler.sh

Теперь откройте файл в своем текстовом редакторе.

Добавьте код для отображения запланированных задач

Установите crontab, если он еще не установлен на вашей системе. Чтобы установить crontab, выполните следующую команду в терминале:

sudo apt-get update
sudo apt-get install cron

Внутри файла task_scheduler.sh добавьте следующий код:

#!/bin/bash

## Функция для отображения запланированных задач
list_tasks() {
  echo "Запланированные задачи:"
  crontab -l
  echo
}

Этот код определяет функцию с именем list_tasks, которая отображает запланированные задачи с использованием команды crontab -l.

Добавьте код для добавления новой задачи

Под先前 добавленным кодом добавьте следующий код:

## Функция для добавления новой задачи
add_task() {
  read -p "Введите команду или скрипт для выполнения: " command
  read -p "Введите расписание (ежедневно, ежедневно, еженедельно): " schedule
  read -p "Введите любые дополнительные параметры: " parameters

  case $schedule in
    hourly)
      cron_schedule="0 * * * *"
      ;;
    daily)
      cron_schedule="0 0 * * *"
      ;;
    weekly)
      cron_schedule="0 0 * * 0"
      ;;
    *)
      echo "Некорректное расписание. Пожалуйста, выберите еженедельно, ежедневно или еженедельно."
      return
      ;;
  esac

  ## Добавьте задачу в crontab
  (
    crontab -l 2> /dev/null
    echo "$cron_schedule $command $parameters"
  ) | crontab -

  echo "Задача успешно запланирована."
  echo
}

Этот код определяет функцию с именем add_task, которая запрашивает у пользователя команду или скрипт для выполнения, расписание (ежедневно, ежедневно или еженедельно) и любые дополнительные параметры. Затем он назначает соответствующее расписание cron в зависимости от выбранного расписания. Наконец, он добавляет задачу в crontab с использованием команды crontab -l.

Добавьте код для удаления задачи

Под先前 добавленным кодом добавьте следующий код:

## Функция для удаления задачи
remove_task() {
  read -p "Введите команду или скрипт для удаления: " command

  ## Удалите задачу из crontab
  crontab -l | grep -v "$command" | crontab -

  echo "Задача успешно удалена."
  echo
}

Этот код определяет функцию с именем remove_task, которая запрашивает у пользователя команду или скрипт для удаления. Затем он удаляет задачу из crontab с использованием команды crontab -l.

Добавьте код для цикла главного меню

Под先前 добавленным кодом добавьте следующий код:

## Цикл главного меню
while true; do
  echo "Планировщик задач"
  echo "1. Показать запланированные задачи"
  echo "2. Добавить задачу"
  echo "3. Удалить задачу"
  echo "4. Выйти"
  read -p "Введите ваш выбор: " choice
  echo

  case $choice in
    1)
      list_tasks
      ;;
    2)
      add_task
      ;;
    3)
      remove_task
      ;;
    4)
      break
      ;;
    *)
      echo "Некорректный выбор. Пожалуйста, попробуйте снова."
      echo
      ;;
  esac
done

Этот код создает цикл главного меню, который повторно отображает меню и запрашивает у пользователя выбор. В зависимости от выбранного варианта он вызывает соответствующую функцию (list_tasks, add_task или remove_task) или выходит из цикла.

Сохраните и закройте файл

Сохраните изменения в файле task_scheduler.sh и закройте текстовый редактор.

Чтобы сделать скрипт исполняемым, выполните следующую команду в терминале:

chmod +x task_scheduler.sh

Эта команда назначает права на выполнение для файла task_scheduler.sh.

Запустите проект

Чтобы запустить планировщик задач, выполните следующую команду в терминале:

./task_scheduler.sh

Эта команда запускает скрипт task_scheduler.sh и запускает планировщик задач. Следуйте инструкциям на экране, чтобы просмотреть запланированные задачи, добавить новые задачи или удалить существующие задачи.

Task scheduler terminal output

Резюме

Поздравляем! Вы успешно завершили проект по планировщику задач. Вы создали Bash-скрипт, который позволяет вам планировать и управлять задачами. Скрипт предоставляет варианты просмотра запланированных задач, добавления новых задач и удаления существующих задач. Не стесняйтесь дальней настройки скрипта в соответствии с вашими конкретными потребностями. Приятного планирования!

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться