예약된 작업 설정

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 에서 예약된 작업을 설정하는 방법을 배우게 됩니다. 짧은 간격으로 명령을 반복적으로 실행하기 위한 watch 명령과 특정 시간에 작업을 예약하기 위한 crontab 유틸리티, 이 두 가지 강력한 도구를 살펴볼 것입니다. 이러한 기술은 시스템 관리자 및 Linux 시스템에서 반복적인 작업을 자동화해야 하는 모든 사람에게 필수적입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 92%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

watch 명령 사용

watch 명령을 사용하면 명령을 반복적으로 실행하고 실시간으로 출력을 볼 수 있습니다. 이는 변경 사항을 모니터링하거나 짧은 간격으로 명령을 정기적으로 실행하는 데 유용합니다.

  1. 터미널을 엽니다. /home/labex/project 디렉토리에 있어야 합니다. 확실하지 않은 경우, pwd 명령으로 현재 디렉토리를 확인할 수 있습니다.

  2. watch를 사용하여 현재 날짜와 시간을 5 초마다 표시해 보겠습니다. 다음 명령을 입력합니다.

    watch -n 5 date

    이 명령은 다음과 같은 기능을 합니다.

    • watch는 다른 명령을 반복하기 위해 사용하는 명령입니다.
    • -n 5watch에게 각 실행 사이에 5 초를 대기하도록 지시하는 옵션입니다. 이 옵션을 생략하면 watch는 기본 간격인 2 초를 사용합니다.
    • datewatch가 반복적으로 실행할 명령입니다. 현재 날짜와 시간을 표시합니다.
  3. 명령을 입력하면 5 초마다 업데이트되는 전체 화면 표시가 나타납니다. 다음과 유사하게 보일 것입니다.

    watch command output example

    맨 위 줄에는 실행 중인 명령과 업데이트 빈도가 표시됩니다. 나머지 화면에는 date 명령의 출력이 표시됩니다.

  4. watch 명령을 종료하려면 Ctrl+C를 누릅니다. 이 키 조합은 Linux 에서 실행 중인 명령을 종료하는 데 일반적으로 사용됩니다.

    watch 명령을 중지하지 않으면 무한정 계속 실행되어 터미널에서 새 명령을 입력하지 못할 수 있습니다.

Crontab 설치

작업을 예약하기 위해 crontab 을 사용하기 전에, 시스템에 설치되어 있는지 확인해야 합니다. 대부분의 Linux 배포판에는 crontab 이 미리 설치되어 있지만, 필요에 따라 확인하고 설치하는 것이 좋습니다.

  1. 먼저, crontab 이 이미 설치되어 있는지 확인해 보겠습니다. crontab 명령을 실행하여 확인할 수 있습니다.

    crontab -l

    crontab 이 설치되어 있으면 현재 cron 작업 목록이 표시되거나 "no crontab for labex"라는 메시지가 표시됩니다.

  2. 명령을 찾을 수 없다는 오류 메시지가 표시되면 crontab 을 설치해야 합니다. Ubuntu 또는 Debian 기반 시스템에서는 다음 명령을 사용하여 설치할 수 있습니다.

    sudo apt update
    sudo apt install cron

    비밀번호를 입력하라는 메시지가 표시됩니다. 입력하고 (보안상의 이유로 입력하는 문자가 표시되지 않습니다) Enter 키를 누릅니다.

  3. 설치 후, cron 서비스를 시작합니다.

    sudo service cron start

    이 명령은 cron 서비스를 즉시 시작합니다.

  4. 이제 cron 이 설치되어 실행 중인지 확인합니다.

    sudo service cron status

    cron 서비스가 실행 중임을 나타내는 출력이 표시되어야 합니다.

Crontab 소개

이제 crontab 을 설치했으니, 사용 방법을 살펴보겠습니다. Crontab 은 로그인하지 않은 상태에서도 특정 시간에 작업을 예약하는 데 사용됩니다.

  1. 먼저, 현재 crontab 항목 (있는 경우) 을 확인해 보겠습니다. 다음 명령을 사용합니다.

    crontab -l

    -l 옵션은 "list"를 의미합니다. 이 명령은 crontab 에 있는 모든 예약된 작업을 표시합니다.

    아직 cron 작업을 설정하지 않았다면 "no crontab for labex"라는 메시지가 표시됩니다. 이는 새 사용자에게는 정상입니다.

  2. 이제 편집을 위해 crontab 을 열어보겠습니다. 다음 명령을 사용합니다.

    crontab -e

    -e 옵션은 "edit"를 의미합니다. 이 명령은 텍스트 편집기에서 crontab 파일을 엽니다.

    crontab 을 처음 사용하는 경우, 편집기를 선택하라는 메시지가 표시될 수 있습니다. 다양한 편집기에 해당하는 숫자 목록이 표시됩니다. 초보자의 경우, nano(일반적으로 옵션 1) 가 사용하기 더 간단하므로 좋은 선택입니다. nano 에 해당하는 숫자를 입력하고 Enter 키를 누릅니다.

    Selecting an editor

    편집기를 선택하라는 메시지가 표시되지 않으면 걱정하지 마세요. 이미 기본 편집기가 설정되어 있다는 의미입니다.

  3. 편집기가 열리면 빈 파일 (또는 기존 cron 작업이 있는 경우) 이 표시됩니다. 아직 아무것도 추가하지 마세요. 나중에 단계에서 수행할 것입니다. 지금은 편집기에 익숙해지세요.

    nano 를 사용하는 경우, 화면 하단에 몇 가지 도움말 명령이 표시됩니다. ^ 기호는 Ctrl 키를 나타냅니다. 따라서 ^X는 "Ctrl+X"를 의미하며, nano 를 종료하는 데 사용됩니다.

  4. 변경 사항을 저장하지 않고 편집기를 종료합니다. nano 에서는 Ctrl+X 를 눌러 이 작업을 수행할 수 있습니다. 변경 사항을 저장할지 묻는 메시지가 표시되면 'N'을 눌러 "No"를 선택합니다.

Crontab 구문 이해

cron 작업을 추가하기 전에, 구문을 이해하는 것이 중요합니다. Crontab 은 작업이 언제 실행되어야 하는지 결정하기 위해 특정 형식을 사용합니다.

  1. cron 작업의 기본 형식은 다음과 같습니다.

    * * * * * command_to_execute

    각 별표 (*) 는 왼쪽에서 오른쪽으로 특정 시간 단위를 나타냅니다.

    1. 분 (0-59)
    2. 시 (0-23)
    3. 월의 날짜 (1-31)
    4. 월 (1-12)
    5. 요일 (0-7, 여기서 0 과 7 은 모두 일요일을 나타냄)
  2. 이해를 돕기 위한 몇 가지 예시입니다.

    • 30 2 * * *는 "매일 오전 2 시 30 분"을 의미합니다.
    • 0 9 * * 1-5는 "월요일부터 금요일까지 오전 9 시"를 의미합니다.
    • */15 * * * *는 "15 분마다"를 의미합니다.
  3. 다음 특수 문자를 사용할 수 있습니다.

    • *: 모든 값
    • ,: 값 목록 구분자
    • -: 값 범위
    • /: 단계 값
  4. 더 복잡한 예시를 살펴보겠습니다.
    15,45 9-17 * * 1-5 /path/to/script.sh
    이는 "월요일부터 금요일까지 오전 9 시부터 오후 5 시까지 매 시간 15 분과 45 분에 /path/to/script.sh를 실행"을 의미합니다.

이 구문을 이해하는 것은 효과적인 cron 작업을 만드는 데 핵심입니다. 이 형식을 사용하여 다양한 작업을 어떻게 예약할 수 있는지 생각해 보십시오.

Cron Job 추가

이제 구문을 이해했으니, 매 분마다 현재 날짜를 파일에 쓰는 간단한 cron 작업을 추가해 보겠습니다.

  1. 편집을 위해 crontab 을 엽니다.

    crontab -e
  2. 편집기가 열리면 다음 줄을 crontab 에 추가합니다.

    * * * * * date >> /home/labex/project/date_log.txt
    Cron job editor screenshot

    이 내용을 자세히 살펴보겠습니다.

    • 다섯 개의 별표 * * * * *는 "매달, 매일, 매 시간, 매 분마다"를 의미합니다.
    • date는 실행하려는 명령입니다.
    • >>는 출력을 파일에 추가하는 데 사용됩니다 (덮어쓰는 대신).
    • /home/labex/project/date_log.txt는 출력을 저장할 파일입니다.
  3. 편집기를 저장하고 종료합니다. nano 를 사용하는 경우:

    • Ctrl+X를 눌러 종료합니다.
    • 변경 사항을 저장하려는 것을 확인하려면 Y를 누릅니다.
    • 파일 이름을 확인하려면 Enter를 누릅니다.
  4. 종료 후 "crontab: installing new crontab"이라는 메시지가 표시되어야 합니다. 이는 변경 사항이 저장되었음을 확인합니다.

Cron Job 모니터링

이제 cron 작업을 설정했으니, 제대로 작동하는지 확인해 보겠습니다.

  1. 먼저, cron 작업을 추가한 후 최소 1 분 이상 기다려야 합니다. cron 작업은 분 단위로 실행되므로, 작업이 처음 실행되기까지 최대 1 분이 걸릴 수 있습니다.

  2. 기다린 후, cat 명령을 사용하여 로그 파일의 내용을 봅니다.

    cat /home/labex/project/date_log.txt

    cat 명령은 파일의 내용을 터미널에 직접 표시합니다.

  3. 날짜와 시간이 포함된 줄이 하나 이상 표시되어야 합니다. 다음과 유사하게 표시됩니다.

    Sat Aug  5 10:15:01 UTC 2023

    아무것도 보이지 않으면, 1 분 더 기다린 후 다시 시도하십시오. 때로는 cron 작업이 실행을 시작하는 데 시간이 걸릴 수 있습니다.

  4. cron 작업이 실제로 작동하는 것을 보려면, 앞서 배운 watch 명령을 사용하여 파일을 실시간으로 모니터링할 수 있습니다.

    watch -n 60 cat /home/labex/project/date_log.txt

    이렇게 하면 60 초마다 업데이트되어, 새로운 항목이 추가될 때마다 표시됩니다.

  5. 몇 분 동안 실행해 봅니다. 매 분마다 새로운 줄이 추가되는 것을 볼 수 있습니다.

  6. 관찰을 마쳤으면, Ctrl+C를 눌러 watch 명령을 종료합니다.

요약

축하합니다! "예약된 작업 설정" 랩을 성공적으로 완료했습니다. 다음을 배우셨습니다.

  1. 짧은 간격으로 명령을 반복적으로 실행하기 위해 watch 명령을 사용하는 방법.
  2. 시스템에 crontab 을 설치하고 설정하는 방법.
  3. crontab -lcrontab -e를 사용하여 crontab 을 보고 편집하는 방법.
  4. 작업을 예약하기 위한 crontab 구문을 이해하는 방법.
  5. 매 분마다 실행되는 간단한 cron 작업을 만드는 방법.
  6. cron 작업의 출력을 모니터링하는 방법.

이러한 기술은 Linux 환경에서 작업을 자동화하고 시스템을 모니터링하는 데 기본이 됩니다. Linux 여정을 계속 진행하면서 시스템 관리 및 자동화에서 예약된 작업의 더 많은 용도를 찾을 수 있습니다.

날짜를 로깅하는 간단한 예제를 사용했지만, 데이터 백업, 소프트웨어 업데이트 또는 시스템 유지 관리 스크립트 실행과 같은 더 복잡한 작업에 cron 작업을 사용할 수 있습니다. 특히 시스템에 중요한 작업을 포함하는 경우 cron 작업을 설정할 때 항상 주의하십시오.