일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 문파문파
- 타이젠
- 문파문파 공략
- 안드로이드
- 데이터베이스
- mysql
- arm
- 태그를 입력해 주세요.
- 디자인 패턴
- Tizen
- 우분투
- 해외직구
- 애플
- 블로그
- 인공지능
- 단통법
- 국정원
- Linux
- 손민한
- NC 다이노스
- 김경문
- 프로야구
- ubuntu 12.04
- 리뷰
- ubuntu
- NC다이노스
- 뉴스타파
- 조세피난처
- 야구
- python
- Today
- Total
꿈꾸는 사람.
[Cron][Crontab] 리눅스 작업 스케줄러 본문
시스템 관리자는 보안이나 시스템의 관리 등을 위해 주기적으로 동일한 작업을 반복 수행해야 한다.
리눅스에서 특정 시각에 명령이나 프로그램이 수행되도록 하는 리눅스용 작업 스케줄러인 크론(Cron)이란 도구를 소개한다.
크론 (Cron)
미리 구성된 시간에 실행되도록 작업을 할당하는 스케줄링 도구가 크론이다.
이것으로 일정한 간격으로 시스템에서 수행될 일들을 자동화할 수 있다.
매시간 또는 매일 수행해야 하는 작업과 일년에 한 두 번 수행하는 큰 일도 동등하게 관리한다.
다음은 크론에 관련된 파일들이다.
파일 |
설명 |
/usr/sbin/cron |
크론 데몬. |
/usr/sbin/anacron |
크론과 같이 동작하는 프로그램. 서버가 일정 시간 중지되었을 때에도 작업이 실행되는 것을 보장하기 위해 사용하는 도구이다. |
/usr/bin/crontab |
사용자 별 crontab 파일들을 관리한다. |
/bin/run-parts |
경로에 있는 스크립트나 프로그램을 실행한다. |
/etc/crontab | 시스템 크론탭 파일. |
Cron 동작하는 방식.
Cron은 부팅할 때 시작되고 데몬으로 백그라운드로 실행된다. 즉, 사용자의 개입이 없이 실행되고 실행을 결정할 어떤 이벤트가 발생하기를 기다리는게 된다.
이벤트가 발생하면, 크론은 예정된 명령이 무엇이건 실행한다.
크론은 어떤 시점에 무슨 명령을 실행할지 결정하는데 crontab이란 파일을 읽어서 수행 한다.
Crontab 읽는 방법
시스템 전체에 사용되는 crontab인 /etc/crontab은 다음과 같다.
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
위 내용은 system crontab이고 수정하지 말아야 하며 시스템이 갱신될 때 파일이 교체되므로 수정사항을 잃어버리게 된다.
때문에 사용자 자신의 crontab을 사용하는 것이 바람직하다.
파일의 첫 두 줄은 명령을 실행할 쉘과 프로그램을 검사할 경로를 명시한다.
파일의 나머지는 실제 명령과 예약을 나타낸다.
[명령어와 예약 시간]
* * * * * 사용자 수행할 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0 =일요일)
│ │ │ └────────── 월 (1 - 12)
│ │ └─────────── 일 (1 - 31)
│ └──────────── 시 (0 - 23)
└───────────── 분 (0 - 59)
아스테리스크 (*)는 "가능한 모든 값"을 의미하고 와일드카드로 사용된다.
세 번째, 네 번째, 다섯 번째 열은 어느 날에 명령이 실행될지를 결정한다.
실행 간격은 / 다음에 나오는 숫자로 지정할 수 있다.
예를 들어 매 2시간 간격으로 실행하려면 시간 열에 "*/2"를 쓰면 된다.
[시스템 크론탭의 예]
17 * * * * root cd / && run-parts --report /etc/cron.hourly
매 시간 17분(1:17am, 2:17am, 3:17am 등)에 root 사용자 권한으로 지정된 명령을 수행한다.
run-parts와 cron 디렉터리 사용하기
run-parts 명령은 지정된 경로에 있는 모든 실행 파일(스크립트나 프로그램)을 실행하는 간단한 명령이다.
이것은 실행 파일들을 한 곳에 배치하여 지정된 시간에 여러 스크립트를 실행할 수 있게 하므로 Cron과 함께 널리 사용된다.
사용자 지정 Crontab 사용하기
"crontab" 명령으로 사용자 자신의 예약된 작업을 생성할 수 있다.
사용자 고유의 crontab에는 사용자 열이 없다.
명령 |
설명 |
crontab -l |
현재의 crontab에 등록된 작업 보기 |
crontab -e |
편집기로 현재 사용자에 대한 cron작업의 확인/수정한다. |
crontab -r |
현재 사용자의 예약작업을 모두 삭제 |
'IT > Linux' 카테고리의 다른 글
[Linux] 커맨드 라인에서 Ubuntu 18.04 LTS에 크롬 설치 및 실행 (0) | 2020.01.10 |
---|---|
[Linux] screen 사용법 (5) | 2015.11.11 |
[VIM TIP] E488:Trailing Characters / E488: 끝에 문자가 더 있습니다, ^m 보기 (0) | 2015.09.05 |
[Linux kernel 4.2][Device driver] platform_driver probe 함수 호출 과정. (0) | 2015.09.01 |
[Ubuntu] update 에러 중 GPG public key 오류 해결. (0) | 2015.03.27 |