crontab이란?
crontab은 자신만의 스케쥴러로 특정 스크립트를 주기적으로 실행 시켜주는 기능을 가지고 있습니다.

우선 crontab사용시 필요한 명령어 세가지

crontab -l : 예약된 작업리스트 출력 (없을 경우 없다는 명령 아치리눅스에서는 아무것도 뜨지 않았습니다.)
crontab -e : 예약된 작업 수정 (vi가 익숙치 않거나 제대로 동작하지 않을 경우 nano로 편집할 수 있습니다.)
crontab -r : 예약된 작업 삭제 (전체 예약 명령 자체가 지워지니 가급적 이 명령을 쓰지 말고 기존 명령을 편집하거나 주석처리하여 막아 두는 편이 안전합니다.)

crontab에 일정 등록하기

우선 crontab -e 명령어로 vi를 띄우면 이상한 편집화면이 하나 뜹니다.
일반적인 리눅스의 vi편집은 아래와 같습니다.

1. i 키를 누르면 입력모드로 변합니다.
2. 일정을 등록합니다.
3. Shift + : 를 눌러 :가 화면 하단에 나타나면 wq 키를 쳐서 저장하면 타시 리눅스 프롬프트로 돌아옵니다.

혹 vi편집이 동작이 되지 않거나 이상하다면 nano로 편집해 봅니다.(빵가님 글 참조)
(이 방법을 몰랐다면 영원히 저는 못 썼을 뻔..)
export EDITOR=”/usr/bin/nano” 입력후 다시 crontab -e 를 열어보시면 이제 nano로 연결되고
편집 후 ctrl + x 로 저장

*이때 저장되는 파일은 /tmp/crontab.J8d6iC 와 같이 temp폴더에 쌓이게 되며 저장과 동시에 crontab을 인스톨 합니다.
프로그램을 설치한다는 의미가 아니고 일정을 등록한다 정도의 의미가 될 것 같습니다.

*저장시 다양한 오류 메세지를 확인 하여 오류를 잡아 저장하면 성공입니다.

필드의 내용이 규칙과 맞지 않을 경우 해당 필드의 내용에 문제가 있다며 정상적으로 인스톨 되지 않았다는 메세지가 뜹니다.
bad miniute, bad hour 등 날짜 시간 등 필드내 위치나 단위 등에 문제가 있다면 설치가 안되겠죠.

*정상적으로 설치가 된다면 /var/spool/cron/crontab.host 라는 이름으로 자동 저장이 되어 있을 겁니다.
samba등으로 위 경로를 찾아 들어가 파일을 확인 해 보시면 됩니다.

*저의 경우
[root@alarm ~]# crontab -e
crontab: installing new crontab
crontab: error renaming /var/spool/cron/alarm.tmp.XXXXQvsCBx to /var/spool/cron/ root
rename: Is a directory
crontab: edits left in /tmp/crontab.J8d6iC
이런 오류가 떴었는데 확인 해 보니 /var/spool/cron 폴더 이하에는 폴더가 존재 하면 안되는 것 같았습니다.
저기에 왜 root라는 폴더가 만들어졌는지는 모르지만 어쨌든 저 root폴더가 crontab설치에 방해가 되는 듯 하여 저 폴더를 과감히 삭제 하니 crontab.host 라는 파일이 만들어지면서 인스톨이 성공했다는 메세지가 출력되었습니다.

crontab에 등록된 일정 확인하기

crontab -l를 입력하면 등록한 일정이 그대로 출력됩니다.

crontab 내용 설명

(표1)필드 별 내용과 범위
분 : 0~59
시 : 0~23
일 : 1~31
월 : 1~12
요일 :1~7(월~일)

(표2)필드 설정 방법

여러값 10,30,50**** 매 10,30,50분 마다 실행
범위값 01-3*** 매일 1~3시에 진행
시간간격 1*/5*** 매일 5시간 간격으로 진행
모든값 ***** 매분마다 실행

아래는 예문입니다.

예1) ****7 /home/kim/sunday.sh
매주 일요일 마다 sunday.sh를 실행 하고 싶을 경우

예2) 1*/5*** /home/kim/hour.sh
매일,5시간 간격으로 hour.sh를 실행 하고 싶을 경우

예3) EBS라디오 프로그램 (브리즈님 강좌 )
0 7 * * 1-6 /EBSradio/ebs_record.sh Fluent-English 20 /Pogodata/EBS/Fluent-English
월-토 아침7시0분 20분간 /EBSradio/ebs_record.sh Fluent-English를 실행하고 /Pogodata/EBS/Fluent-English에 저장

20 7 * * 1-6 /EBSradio/ebs_record.sh Easy-English 20 /Pogodata/EBS/Easy-English
월-토 아침7시20분 부터 20분간 /EBSradio/ebs_record.sh Easy-English를 실행하고 /Pogodata/EBS/Fluent-English에 저장

40 7 * * 1-6 /EBSradio/ebs_record.sh Power-English 20 /Pogodata/EBS/Power-English
월-토 아침7시40분 부터 20분간 /EBSradio/ebs_record.sh Power-English를 실행하고 /Pogodata/EBS/Fluent-English에 저장

crontab 설치

답글 남기기

이메일 주소는 공개되지 않습니다.