Cron

cron

cron은 유닉스/리눅스 사용자로 하여금 특정한 명령이나 스크립트를 지정한 시간/날짜에 자동으로 작업을 실행하게 해주는 프로그램이다. 즉, cron은 미리 구성된 시간에 실행되도록 작업을 할당하는 스케줄링 도구 이다.

crontab

cron 설정 파일로, crontable을 줄여 crontab이라 부른다. 시스템 운영에 필요한 작업은 root권한으로 /etc/crontab 에 등록해서 주기적으로 수행할 수 있고, 사용자는 crontab명령을 수행해서 등록할 수 있다.(mac에서는 /var/at/tabscrontab -e로 등록 가능)

$ ps -ef | grep crond # cron의 실행 확인
필드
설정 값 및 내용

minute

0~59로 설정

hour

0~23으로 설정

day of month

1~31으로 설정

month

1~12로 설정

day of week

요일, 07로 설정 0,7 : 일요일, 16: 월~토 직접 sun, mon, tue, wed,thu,fri,sat으로 입력해도된다.

user-name

사용자 이름을 명시(일반적으로 생략)

command

실행할 명령얼르 기입한다.

각 필드값은 위의 표에 명시된 값이외의 값들을 사용할 수 있다.

설명

*

모든(all)

-

연결된 설정 값 지정시 사용

,

연결되지 않은 값을 나열할 때 사용

/

연결된 설정 값 범위에서 특정 주기로 나눌 때 사용

# 월~금까지 오후 12시에 work.sh 스크립트 수행
0 12 * * 1-5 /home/dh0023/work.sh 
# 1월~12월까지 2개월마다 1일 오전 4시 10분에 check.sh 실행
10 4 1 1-12/2 * /etc/check.sh
# 월요일 오전 10시에 Notice라는 제목으로 root/notice 파일의 내용을 지정한 메일로 발송
0 10 * * 1 cat /root/notice | mail -s "Notice" example@naver.com
# 월, 수, 금 오전 4시에 `.bak` 파일 찾아 삭제
0 4 * * 1,3,5 find / -name `*.bak` -exec rm -rf {} \;

명령어

$ crontab [option] 파일명
옵션
설명

-l

crontab에 설정된 내용 출력

-e

crontab의 내용 작성하거나 수정

-r

crontab 내용 삭제

-u

root사용자가 특정 사용자의 crontab 파일을 다룰 때 사용

$ crontab -l
$ crontab -e
$ crontab -r
$ crontab -e -u example # example 사용자의 crontab 내용을 수정하기나 작성

사용자 제한

/etc/cron.allow , /etc/cron.deny 파일로 cron 사용자를 제한할 수 있다. /etc/cron.allow 파일이 존재하는 경우에는 cron.deny 파일 여부와 상관없이 등록된 사용자만 사용이 가능하다. .allow 파일이 존재하지 않고, .deny 파일만 존재하는 경우에는 .deny 파일에 등록된 사용자는 사용이 불가능하다.

참조

Last updated