본문 바로가기
Operating System/Linux

[Linux] Cron, Crontab이란? batch 등록하기

by 스파이디웹 2020. 11. 2.
728x90

-배치(batch)란:

(일괄적으로 처리되는)집단, 즉 일괄적으로 뭔가가 처리되는~

 

-배치를 등록한다는 것은->여러가지 일을 한꺼번에 처리하기 위해 만든 프로그램

(매일 정해진 시간에 혹은 주기적으로 수많은 양의 작업을 직접 타이핑 하지않고 배치 프로그램을 통해  해결)

 

-이 배치를 실행하는것은 개발자가 아닌 스케쥴러가 실행하게 됨.

 

-스케쥴러란:

일정 주기 혹은 특정 시간에 배치 프로그램을 실행시켜주는 프로그램,

리눅스에는 대표적으로 크론탭(Crontab)이 있습니다.

 

-Cron 이란?:

특정한 시간에 또는 특정 시간 마다 어떤 작업을 자동으로 수행하게 해주고 싶을 때 사용하는 명령어가 cron입니다.

 

cron은 특정한 시간에 특정한 작업을 수행하게 해주는 스케줄링 역할을 합니다.

 

리눅스에만 있는 개념이 아닌 여러 OS에 있는 개념입니다.

 

cron 시스템에는 시스템에서 기본적으로 사용하는 cron설정이 있으며, 이를 시스템크론이라 합니다.

또 root나 일반 사용자가 자신의 cron설정을 직접하여 사용하는 사용자크론이 있습니다.

 

-Crontab이란?:

cron작업을 설정하는 파일을 crontab 파일이라고 합니다.

cron프로세스는 /etc/crontab 파일에 설정된 것을 읽어서 작업을 수행해요

crontab 파일은 OS별로 각각 다른 위치에 저장이 됩니다. 

 

일반적으로 BSD계열의 리눅스는 /var/spool/cron/ID

솔라리스 계열은 /var/spool/cron/crontabs/ID에 있습니다.

 

-anacron이란?

/usr/sbin/anacron 에 위치하며,

크론과 같이 동작하는 프로그램으로 서버가 일정 시간 중지되었을 때에도 작업이 실행되는 것을 보장하기 위해 사용하는 도구입니다.

 

-cron동작 방식, cron 실행 흐름

cron파일이 데몬이기 때문에 부팅시 백그라운드로 실행됩니다.

 

cron동작방식을 보면 cron 데몬 (crond)가 crontab을 참조하고 있습니다.

cron데몬은 어떤 task를 언제 어떻게 수행할지를 crontab에서 찾아서 실행합니다.

cron데몬은 시스템 스케줄러 정보뿐만 아니라, 각각 사용자가 설정한 작업 예약 정보도 crontab에서 확인됩니다.


 

1)crontab-l(알파벳 엘)

크론탭에 예약된 리스트를 볼 수 있습니다.

 

2)배치 프로그램 만들기

v1 test1.sh를 통해 sh(쉘) 확장자 파일 생성

(vi 명령어는 해당 파일명의 파일이 존재하면 수정을 하고 없으면 새로 만들어 주는 역할)

i(insert)를 누르면 입력가능

 

3)명령어 작성

#!/bin/bash  ->  bash라는 명령어 편집기를 사용하겠다는 뜻

A="Hello_world"  ->  A라는 문자열 변수를 선언

echo $A  ->  A를 파라미터로 받아 출력

 

입력이 끝나면 ESC -> :wq ->enter를 통해 파일 저장

 

4)ls 명령어

현재 경로에 test1.sh 라는 쉘 파일이 성공적으로 생성된 것을 확인

 

5)chmod 777 test1.sh(권한부여)

777권한은 모든 사용자에게 읽기,쓰기,실행을 하게 해주는 권한

6)./test1.sh

쉘 파일 실행

7)가장 간단한 배치프로그램의 완성 -> 이후 스케쥴러에 등록하기(crontab -e)

crontab -e는 크론탭을 수정(등록) 할 수 있습니다.

#은 주석을 의미

* * * * *는 순서대로 분,시,매일,매월,매주를 의미함

분(0~59)

시(0~23)

매일(1~31)

매월(1~12)

매주(1:월요일~7:일요일)

전부 * 처리할 경우 매 1분마다 실행

 

참조:

https://jhnyang.tistory.com/m/68

728x90

댓글