본문 바로가기

리눅스 서버구축/linux 명령어

리눅스 작업스케줄러 crontab 사용법

리눅스 작업스케줄러 crontab 사용법





crontab이란?

crontab이란? 리눅스에서는 일반적으로 crons 데몬이 주기적인 작업 실행을 처리한다

cron이 시작될 때부터 끝날 때까지 실행되며 cron 설정 파일은 cron table을 줄여서 crontab이라 부른다


리눅스 crontab 개념과 사용법


우선 crontab을 사용하기 위해서는 crond이라는 데몬이 구동중인지 확인해야됩니다


crond 데몬 구동 확인

ps -ef | grep crond



crondl 참조하는 crontab 파일 위치

/var/spool/cron
/etc/cron.d
/etc/crontab

cron은 시작할 때 모든 곳에 저장된 설정파일들을 읽어 메모리에 저장해두고 휴지 상태에 들어간다

그리고 매분마다 활성화돼 변경된 crontab 파일들이 있는지 확인하고 변경된 경우 설정을 다시 읽어 저장하고 그시간에 실행해야 할 작업이 있는지 확인하고 실행시킨 후 다시 휴지 상태로 들어간다



시스템 개별 사용자를 위한 crontab 파일 위치하며 일반적으로 root 계정용 하나와 계정 사용자 당 1개의 파일을 가진다

파일명은 사용자의 계정명이며 cron은 이 이름을 바탕으로 각 설정 파일에 지정된 작업들을 실행할 때 사용할 UID를 결정한다 이 곳에 있는 설정파일들은 crontab 명령으로 관리한다



관리자가 직접 crontab지정

vi /etc/crontab

관리자가 직접 지정한 작업들을 설정하며 임의의 사용자 권한으로 실행할 수 있다

시스템 관련 작업들을 등록해 사용하는 곳이다.


vi /etc/crontab 을 입력해 crontab의 인자값을 확인해보자


/etc/cron.d

소프트웨어 패키지를 설치할 때 필요한 주기적인 작업을 등록하는 공간으로 사용한다.

임의의 사용자 권한으로 실행할 수 있다.


cron의 사용자 제어

/etc/cron.deny와 /etc/cron.allw 설정파일에서 사용자에 대한 crontab 제어를 관리할 수 있다.


/etc/cron.allow

이 허용파일이 있는 경우 파일 내 지정된 사용자만 crontab을 등록할 수 있다

지정되지 않은 사용자는 crontab 명령을 실행할 수 없다


/etc/cron.deny

허용파일이 없는 경우에는 이 거부 파일이 사용된다

파일 내 지정된 사람을 제외한 나머지 사용자에게 crontab 명령 실행 권한을 준다


crontab 사용법

crontab 명령어를 사용하여 작성하는 cron은 개별사용자용 크론이다

/var/spool/cron 아래에 저장된다.


crontab 명령어




등록 내용의 설정 방법이다

crontab -ㅣ : 예약된 작업리스트
crontab -e : 예약된 작업 수정
crontab -r : 예약된 작업 삭제
crontab -u 사용자명 : 루트관리자는 해당 사용자 crontab 파일을 보거나 삭제, 평집 가능


crontab 파일형식

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
분 : 0~59
시간 : 0-24
일 : 0~31
월 : 1~12
요일 : 0~7(0 또는 7=일요일, 1=월, 2=화 . 3=수 , 4=목, 5=금=6, 토7=일)
사용자명 /etc/crontab , /etc/cron.d에 저장될 경우 필요
작업명령 실행할 명령을 한줄로 쓴다

*(분) *(시간) * (월) *(요일) *([사용자명]) 실행명령 순으로 설정



예제)

50, 5, 3 * * 1-7 root /usr/bin/bin/rdate -s time.bora.net && clock -w

월요일에서 일요일까지 매월 매일 3시 5분에서 50분까지 루트 권한으로 시간 동기화 명령어를 실행한다

* :범위 내 모든 경우

숫자 : 정확이 일치하는 그 시각, 날짜

'-' 기호로 연결된 두 숫자 : 두 숫자 사이에 포함된 범위를 뜻환

, (컴마)로 구분돼 나열된 숫자 : 나열된 숫자 중 일치하는 경우를 뜻한다