* Ubuntu 12.04 LTS 서버를 기준으로 작성되었습니다.
cron이란 리눅스에서 특정한 시간에 반복된 작업을 하기위한 것 이다.
cron은 crontab 이란 명령어를 통해서 등록, 삭제를 하게 되는데
콘솔창에서
$ crontab -e
을 치면 다음과 같은 화면을 볼 수 있다.
# 위에 써있는 설명 생략
# m h dom mon dow command
화면이 뜨기전에 보통은 어떤 에디터로 편집할것인지 묻는게 나오기도 하는데 본인은 그냥 vi에디터를 선택하였다.
위 화면에서 이제 주기적으로 실행할명령을 둘재줄에 보이는 형태대로 추가 해주면 된다.
m은 분, h는 시간, dom 은일, mon은 월 dow는 주 를 뜻한다. command는 실행할 명령.
01 04 * * * /usr/bin/somedirectory/somecommand
위의 형태로 추가를 하게 된다.
위 명령의 의미는 '매일 오전 4시 1분에 어떠한 명령을 실행하라' 가 된다.
*은 순서대로 매분, 매시간, 매일, 매달, 매 주를 의미한다.
혼동하면 안되는 것이 0 4 * * * 로 하면 4시간 마다가 아닌 매일 오전 4시이고 4 * * * * 는 4분마다가 아닌 매시간 4분을 가리킨다.
1 4* * * : 매일 오전 4시 1분에 실행하라
1 * * * * : 매시 1분에 실행하라.(1시간 간격)
* * * * * : 1분에 한 번씩 실행하라
1 4 2 * * : 매달 2일 오전 4시 1분에 실행하라.
만약 매분마다, 혹은 매 시간마다 실행하는 형태로 하고 싶다면? '/'를 이용하여 구분 할 수 있다
*/1 * * * * : 1분 마다 실행하라
0 */3 * * * : 3시간 마다 실행하라
또한 ',' 를 이용하여 실행되는 시간을 여러면 지정할 수 있다.
1 4,22 * * * : 오전 4시 1분, 오후 10시 1분에 실행하라
1 4 * * 0,2 : 매주 일요일과 화요일 4시 1분에 실행하라
EX> 위 사항을 가지고 apache의 htdocs를 백업 하는 예
1. 백업 스크립트 작성
#!/bin/sh
today=$(date +%Y%m%d)
tar cvf /usr/backup/bakcup-docs-$today.tar /opt/lamp/apache2/htdocs
파일 명 /usr/bin/reserve/backup.sh
2. crontab 등록
$ crontab -e
후
#매일 오후 10시에 백업
0 22 * * * /usr/bin/reserve/backup.sh
crontab: installing new crontab
이란 메세지가 뜨면서 예약 작업이 동작을 한다.
다른 방법으로는
/etc/폴더 아래에 있는 crontab 파일을 직접 편집해 주는 방법도 있다.
등록방법은 동일하며 한가지 주(dow)와 명령어를 입력하는 부분 사이에 해당 명령을 실행시킬 user 를 명시해 주어야 한다.
crontab -e 를 이용해 등록한 예약작업은 기본적으로 해당 유저가 명령어를 실행하는 것으로 등록되기에 user를 명시해 주는 부분이 빠진것.
또한
/etc/cron.allow
/etc/cron.deny
파일을 만들어 cron을 사용할수 있는 유저와 사용이 불가능한 유저를 구분할 수 있다. 각각의 파일에 user의 ID를 넣어주면 된다.
우분투에서는 기본적으로 저 두파일이 존재하지 않기에 필요할때 만들어서 사용해야 한다.
우분투는 두 파일이 존재하지 않을 시 모든 유저에게 cron사용이 허용된다.
그리고 매월, 매주, 매일, 매시 마다 실행되는 예약작업을 지정하는 폴더가 기본적으로 존재 하는데
/etc/ 폴더 아래에 각각
cron.daily
cron.hourly
cron.monthly
cron.weekly
의 폴더가 있다. 이 폴더 밑에 스크립트 파일을 두면 각각의 주기에 맞춰 자동으로 폴더 밑의 스크립트들이 실행된다.
마지막으로 크론탭의 옵션은
-e : 크론탭 수정
-r : 등록된 작업 모두 삭제
-l : 등록된 작업 리스트 보여주기
-i : 위 명령에 붙여서 (ex -ir)사용하며 동작 전에 질문하기
가 있다.
'OS > Linux' 카테고리의 다른 글
[Linux] 집 컴퓨터를 웹서버로 만들기 (CentOS 6.4) (0) | 2013.08.27 |
---|---|
[linux] 우분투에 JDK + TOMCAT 설치 간단 정리 (0) | 2013.04.23 |
[linux] 리눅스 관리시 자주 쓰이는 명령어 개인적 정리 (0) | 2013.04.16 |
[linux] RunLevel 과 리눅스 부팅시 스크립트 자동실행 (0) | 2013.04.16 |
[Linux] BitNami Stack을 이용한 APM 환경 설정 + phpmyadmin (0) | 2013.04.15 |