728x90
반응형
맨 위로 올라가기
크론(Cron)

 

Time Clipping Cupid's Wings (1694), Pierre Mignard

 

"Cron" 이라는 용어는 "Chronos"라는 그리스어에서 영감을 받아 만들어졌습니다.

Choronos 는 "시간" 또는 "기간"을 뜻하는 단어입니다.

 

크론은 이러한 Chronos의 영향을 받아 개발되었으며,

정해진 시간에 작업을 실행할 수 있는 기능을 제공하기 때문에 이러한 이름이 지어졌습니다.

 

따라서 "크론(Cron)"은 시간 기반 예약 작업을 의미합니다.

 

이어서 크론(Cron)은 유닉스(Unix) 운영체제(리눅스 포함)에서 유틸로티로서 사용되는 작업 예약 기능입니다.

크론은 특정 시간, 날짜 또는 주기적으로 실행되어야 하는 스크립트, 프로그램 또는 명령어를 예약할 수 있습니다.

 

크론은 크론 데몬(Cron Daemon)이라는 백그라운드 프로세스에 의해 실행됩니다.

크론 데몬은 /etc/crontab 및 /etc/cron.d 디렉토리의 파일에 지정된 예약 작업을 모니터링 합니다.

  • 데몬(Daemon)
    • 데몬은 컴퓨터 운영체제에서 백그라운드에서 실행되는 프로그램입니다.
      데몬은 일반적으로 시스템 작업이나 백그라운드 서비스를 제공하며, 사용자의 상호 작용하지 않습니다.
      데몬은 보통 시스템 부팅시 자동으로 시작되어 백그라운드에서 지속적으로 실행되는데,
      이를 통해 다양한 서비스를 제공할 수 있습니다.

      데몬은 일반적으로 "d"로 끝나는 이름을 가지며,
      예를 들어 리눅스에서 cron을 제어하는 데몬은 "crond"입니다.
      데몬은 보통 시스템 서비스 또는 백그라운드 작업에서 사용되지만, 사용자가 직접 실행하는 프로그램도
      데몬으로 실행될 수 있습니다. 예를 들어 웹 서버 소프트웨어인 Apache HTTP Server는 데몬으로 실행되며,
      사용자가 명령어를 입력하여 시작하거나 중지할 수 있습니다.

크론은 다양한 시간 단위에서 작업을 예약할 수 있습니다.

분, 시간, 일, 월, 요일 등을 지정할 수 있으며, 이러한 단위를 결합하여 복잡한 작업 예약도 가능합니다.

예를 들어, 매일 오전 6시에 실행되는 백업 스크립트를 예약하려면 다음과 같은 크론 작업을 만들 수 있습니다.

0 6 * * * /home/user/backup.sh

 

위의 예제에서 0은 분을 나타내고 6은 시간을 나타냅니다.

*은 모든, 일, 월, 요일을 나타내며, /home/user/backup.sh는 실행될 스크립트 파일입니다.

 

크론은 유닉스 및 리눅스 시스템에서 자주 사용되며, 자동화된 작업 예약에 유용합니다.


크론탭(Crontab)

 

크론탭(Crontab)은 유닉스 및 리눅스 기반 시스템에서 cron 데몬을 사용하여 주기적으로 실행되는 작업을

스케줄링하고 관리하는 방법 중 하나입니다.

 

크론탭은 일반적으로 사용자 계정 또는 시스템 전체 레벨에서 설정될 수 있으며,

주기적으로 실행되어야 하는 작업(예: 데이터베이스 백업, 로그 파일 정리 등)을 정의하는데 사용됩니다.

크론탭은 일반적으로 CLI(Command Line Interface)를 통해 사용자가 직접 작성하거나 편집할 수 있으며,

특정 작업을 스케줄링하고 수정할 수 있습니다.

 

크론탭의 각 줄은 스케줄링하려는 작업의 주기(분, 시간, 일 등)와 명령어를 정의합니다.

예를 들어, "0 2 * * * /home/user/backup.sh" 는 매일 새벽 2시에 /home/user/backup.sh 스크립트를

실행하도록 예약된 작업입니다.

 

  • 크론탭(crontab) 설정 방법
    1. 'crontab -e' 명령어를 입력하여 크론탭 파일을 엽니다.
      이 명령어를 실행하면 기본 텍스트 에디터가 열리며, 크론탭 파일을 편집할 수 있습니다.

    2. 크론탭 파일의 형식은 다음과 같습니다.
      * * * * * command
      ┬ ┬ ┬ ┬ ┬
      │ │ │ │ │
      │ │ │ │ └─ 요일 (0-6, 0:일요일)
      │ │ │ └─── 월 (1-12)
      │ │ └───── 일 (1-31)
      │ └─────── 시간 (0-23)
      └───────── 분 (0-59)

      위 형식에서 별표(*)는 모든 값을 의미합니다.
      즉, [분, 시간, 일, 월, 요일] 중 어떤 값이든 상관없이 작업을 실행하도록 설정하는 것입니다.
      예를 들어 "0 1 * * *"는 매일 새벽 1시에 실행하도록 예약된 작업을 의미합니다.

    3. 크론탭 파일에 작업을 추가합니다.
      위의 형식을 따라 작업을 추가하면 됩니다.
      작업은 해당 명령어를 입력하여 설정할 수 있습니다.
      예를 들어, "0 1 * * */home/user/backup.sh"는 매일 새벽 1시에 /home/user/backup.sh 스크립트를
      실행하도록 예약된 작업입니다.

    4. 크론탭 파일을 저장하고 종료합니다.
      저장하면 크론탭 데몬이 자동으로 설정을 적용합니다.


참고로, 'crontab -1' 명령어를 사용하면 현재 사용자의 크론탭 설정을 확인할 수 있으며,

'crontab -r' 명령어를 사용하면 현재 사용자의 모든 크론탭 설정을 제거할 수 있습니다.

 

이와 같이 정기적으로 실행되는 작업을 자동화하는 프로그램을 배치 프로그램이라고 합니다.
이러한 작업을 자동으로 수행하도록 설정하면, 시스템 관리나 작업 처리 등에서 효율적으로 사용할 수 있습니다.


Q. 매주 월요일 오전 10시 /etc/check.sh 실행
A. 0 1 0 * * 1 /etc/check.sh

Q. 일요일부터 화요일까지 오후 4시 30분 /etc/batch.sh 실행
A. 30 16 * * 0-2/etc/batch.sh

Q. 일요일부터 목요일까지 오전 2시 30분, 오후 2시 30분에 /etc/batch 실행
A. 30 2,14 * * 0-4/etc/batch.sh

Q. 1월부터 12월까지 2개월마다 1일, 오전 1시 10분에 /etc/batch.sh 실행
A. 10 1 1  1-12/2 */etc/batch.sh

Q. 매주 금요일 오후 6시 50분 /etc/batch.sh 실행
A. 50 18 * * 5/etc/batch.sh

Quartz Job Scheduler

 

Java 기반의 오픈소스 라이브러리로, 스케줄링 작업을 관리하고 실행하는 기능을 제공합니다.

 

쿼츠는 초, 분, 시, 일, 주 월, 년까지의 시간 단위를 모두 지원합니다.

따라서 초와 년도를 포함하여 모든 시간 단위를 지정할 수 있습니다.

초 단위는 '0' 부터 '59'까지의 정수로 지정할 수 있고, 년도는 '1970년' 부터 '2099'년까지의 범위에서 지정할 수 있습니다.

728x90
반응형

'OS' 카테고리의 다른 글

도커(Docker)  (0) 2023.05.12
File-System Permission  (0) 2023.04.20
Disk Scheduling  (0) 2023.04.20
Process Scheduling  (0) 2023.04.19
Page Replacement Algorithms  (0) 2023.04.19

+ Recent posts