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 -l コマンドを使ってタスクを crontab に追加します。

タスクを削除するコードを追加する

先ほど追加したコードの下に、次のコードを追加します。

## タスクを削除する関数
remove_task() {
  read -p "削除するコマンドまたはスクリプトを入力してください:" command

  ## タスクを crontab から削除する
  crontab -l | grep -v "$command" | crontab -

  echo "タスクが正常に削除されました。"
  echo
}

このコードは、remove_task という名前の関数を定義しており、この関数はユーザーに削除するコマンドまたはスクリプトを入力するよう促します。その後、crontab -l コマンドを使ってタスクを crontab から削除します。

メイン メニュー ルのループ用のコードを追加する

先ほど追加したコードの下に、次のコードを追加します。

## メイン メニューのループ
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_tasksadd_task、または remove_task) を呼び出したり、ループを終了したりします。

ファイルを保存して閉じる

task_scheduler.sh ファイルに変更を保存し、テキスト エディタを閉じます。

スクリプトを実行可能にするには、ターミナルで次のコマンドを実行します。

chmod +x task_scheduler.sh

このコマンドは、task_scheduler.sh ファイルの実行許可を設定します。

プロジェクトを実行する

タスク スケジューラを実行するには、ターミナルで次のコマンドを実行します。

./task_scheduler.sh

このコマンドは task_scheduler.sh スクリプトを実行し、タスク スケジューラを起動します。画面表示の指示に従って、予定されたタスクを一覧表示したり、新しいタスクを追加したり、既存のタスクを削除したりします。

タスク スケジューラのターミナル出力

まとめ

おめでとうございます!あなたはタスク スケジューラ プロジェクトを成功裏に完了させました。あなたはタスクを予定して管理することができる Bash スクリプトを作成しました。このスクリプトは、予定されたタスクを一覧表示したり、新しいタスクを追加したり、既存のタスクを削除したりするオプションを提供します。あなたの特定のニーズに合うように、スクリプトをさらにカスタマイズすることも自由にできます。楽しい予定調整を!

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習