본문 바로가기

ETC

crontab 사용하기 (정기 작업) 스케줄러

 

crontab 사용하기 (정기 작업)

]#crontab -l <-- 크론의 설정내용을 출력함
]#crontab -e <-- 설정 내용을 수정함
]#crontab -r <--설정 내용을 삭제함
-----------------------------------------------------------------------------

cron은 일정관리 명령어로서 일정관리 파일(crontab)에 따라 주기적인 명령을
수행한다. 이 일정관리 파일에는 명령이 수행될 시간, 수행할 로그인명 등이
포함된다. 시스템에 따라서 /usr/lib/crontab이나 /etc/crontab파일이 있으며
crontab디렉토리가 따로 존재할 수도 있다.

crontab은 7개의 필드로 구성되는데 6번째 필드는 생략하여도 무방하다.
+----------------------------------------------+
| 분 | 시간 | 날짜 | 달 | 요일 | 사용자 | 명령 |
+----------------------------------------------+
상기의 형식에서 사용자필드는 명령이 수행될 사용자명을 지정하고 명령필드는
수행하고자 하는 명령어와 인자를 적어주면 된다. 시간을 나타내는 1~5번째의
필드는 그 시간들을 무시하고자 할때 *로 표시하게 된다. 요일필드의 경우에는
월요일부터 금요일까지를 나타내며 순서대로 1~5로 표시하게 된다. 그리고 하나의
필드에 중복된 내용을 기재하고자 하면 콤마(,)로 구분하면 된다. 연속된 내용을
기록하고자 하면 하이픈(-)을 이용하여 기간을 나타낸다. 또한 슬래쉬(/)를 사용한
내용도 있는데 이는 시간의 경우에 23-7/2라면 23시부터 07시까지 매 2시간마다
라는 의미를 가지고 있다. 시간필드에서 */2라면 매 2시간마다라고 해석하면 된다.

0,30 * 1,15 * 1-5 fsck -y
상기의 예에서 보면 매달 1일과 15일날 30분마다 요일에 관계없이 fsck -y명령을
실행하도록 되어 있다.(위의 예는 있을 수 없는 상황이겠지만 예로 들어본다.)
이러한 방식으로 명령어필드에 여러가지의 내용을 넣을 수 있다.

20 1 * * * root find /tmp -atime +3 -exec rm -f () ';'
매일 새벽 1시 20분에 3일간 접근하지 않은 /tmp내의 파일을 삭제하는 내용
0 4 * * * root find / -xdev -name core +7 -exec rm -f {}';'
매일 새벽 4시 정각에 지난 일주일간 접근하지 않은 core파일들을 삭제한다.
-xdev옵션은 독립형시스템이면 사용하지 않아도 된다.

수정하는 방법은 리눅스의 경우에는 crontab -e명령으로 에디팅을 할 수 있다.
수정하기 전에 지금 등록된 crontab을 보고자 하면 -l옵션을 사용하고 등록된
내용을 삭제하려면 -d옵션을 사용하면 된다.(-r옵션을 사용하는 유닉스도 있다.)
실행결과는 메일로 알려주게 되므로 자신의 메일을 읽어보면 된다.

crontab을 직접 고칠 수 없는 상황이면 crontab을 -l옵션을 사용하여 새로운
화일명으로 리다이렉션 받아서 편집한 뒤에 crontab filename의 형태로 등록하면
된다.
리눅스의 경우에는 /var/spool/cron/crontabs/에 자신의 계정을 화일명으로
crontab이 존재하고 있다.
이를 수정하여 자신에게 맞추거나 또는 새롭게 생성하
면 되겠다.




<결론 >
서버의 시간을 하루에 한번씩 표준시에 일치시키려면
/etc/crontab 파일에 다음 줄을 추가한다.

15 1 * * * root rdate -s time.bora.bet

매일 새벽 1시 15분에  time.bora.net 에서 표준시를 가져와 동기화한다.

뒤에 && clock -w  를 덧붙이면 하드웨어의 시각도 일치시킬 수 있다.

 -w     시스템 시간값을 읽어 CMOS clock에 쓴다.

출처 : http://flogsta.tistory.com/93