Bash 를 사용하여 작업 스케줄러 구축

LinuxBeginner
지금 연습하기

소개

이 프로젝트는 Bash 스크립트를 사용하여 작업 스케줄러를 만드는 과정을 안내합니다. 작업 스케줄러를 사용하면 시간별, 일별 또는 주별과 같이 지정된 간격으로 실행되도록 작업을 예약하고 관리할 수 있습니다. 이 스크립트는 예약된 작업을 나열하고, 새 작업을 추가하고, 기존 작업을 제거하는 옵션을 제공합니다.

👀 미리보기

Task scheduler script preview

시작하려면 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

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

이 코드는 crontab -l 명령을 사용하여 예약된 작업을 표시하는 list_tasks라는 함수를 정의합니다.

새로운 작업 추가를 위한 코드 추가

이전에 추가한 코드 아래에 다음 코드를 추가합니다.

## 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
}

이 코드는 add_task라는 함수를 정의하며, 사용자에게 실행할 명령 또는 스크립트, 스케줄 (시간별, 일별 또는 주별) 및 추가 매개변수를 입력하라는 메시지를 표시합니다. 그런 다음 선택한 스케줄에 따라 적절한 cron 스케줄을 설정합니다. 마지막으로 crontab -l 명령을 사용하여 작업을 crontab 에 추가합니다.

작업 삭제를 위한 코드 추가

이전에 추가한 코드 아래에 다음 코드를 추가합니다.

## 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
}

이 코드는 remove_task라는 함수를 정의하며, 사용자에게 제거할 명령 또는 스크립트를 입력하라는 메시지를 표시합니다. 그런 다음 crontab -l 명령을 사용하여 작업을 crontab 에서 제거합니다.

메인 메뉴 루프를 위한 코드 추가

이전에 추가한 코드 아래에 다음 코드를 추가합니다.

## 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

이 코드는 메뉴를 반복적으로 표시하고 사용자에게 선택을 요청하는 메인 메뉴 루프를 설정합니다. 선택한 옵션에 따라 해당 함수 (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 스크립트를 만들었습니다. 이 스크립트는 예약된 작업을 나열하고, 새 작업을 추가하며, 기존 작업을 제거하는 옵션을 제공합니다. 특정 요구 사항에 맞게 스크립트를 자유롭게 사용자 정의하십시오. 즐거운 스케줄링 되세요!

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습