Linux 리눅스 예약 실행 스케줄러 crontab
페이지 정보
본문
리눅스에는 일정시간마다 자동으로 명령을 실행해주는 스케줄러가 존재한답니다.
예약된 시간에 정확히 프로그램이나 명령을 실행해주는 존재.. 바로 crontab 이라고 합니다.
crontab은 리눅스의 전통적인 서비스인데... 늘 상주해있다가 스케줄러에 있는 시간이 되면 정해진 명령을 실행해줍니다.
예로 든 백업뿐만 아니라 이걸 이용하면 예약 메일보내기도 가능하죠.
1. crontab 살펴보기
등록한 스케줄 파일은 /var/spool/cron 에 있으며, 계정별로 스케줄 파일들이 정리되어있습니다.
root를 비롯해서 일반계정에서도 스케줄 등록을 할 수 있습니다.
예를 들어, /var/spool/cron/root 파일에는 root 계정에서 등록한 스케줄이 있습니다.
[root@localhost cron]# ls /var/spool/cron
2. 스케줄 목록 확인
crontab에 있는 스케줄 확인 명령어는 다음과 같습니다.
2-1. 현재사용자
[root@localhost cron]# crontab -l
no crontab for root
2-2. 현재사용자
[root@localhost cron]# crontab -l -u testuser
no crontab for testuser
3. 등록 형식
스케줄은 아래와 같은 형식을 하고 있습니다.
* * * * * 수행할 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일) 또는 sun, mon, tue, wed thu, fri, sat
│ │ │ └───────── 월 (1 - 12) 또는 jan,feb, mar, apr ... 축약형 영문 월 표시
│ │ └───────── 일 (1 - 31)
│ └───────── 시 (0 - 23) (자정이 0)
└───────── 분 (0 - 59)
범위 지정에 사용할 수 있는 연산자
① *
해당 범위 모두 수행하게 된다.
매분 마다 실행되게 하고 싶다 → * * * * *
매 시간 정각에 실행되게 하고 싶다 → 0 * * * *
매 일 오전 03시에 실행되게 하고 싶다 → 0 3 * * *
매 달 25일 자정에 실행되게 하고 싶다 → 0 0 25 * *
매 해 1월 1일 오후 2시에 실행되게 하고 싶다 → 0 14 1 1 *
매 주 화요일 오전 03시 30분에 실행되게 하고 싶다 → 30 3 * * 2
② -
해당 구간은 모두 수행하게 된다.
매 시간 10분에서 30분까지 매 분마다 실행되게 하고 싶다 → 10-30 * * * *
오후 7시에서 11시까지 매 시간마다 실행되게 하고 싶다 → 0 7-11 * * *
매 월 20일에서 28일까지 자정에 실행되게 하고 싶다 → 0 0 20-28 * *
매 해 3월에서 6월까지 1일 오전 03시 30분에 실행되게 하고 싶다 → 30 3 1 3-6 *
평일 오전 03시에만 실행되게 하고 싶다 → 0 3 * * 1-5
③ ,
특정 시간대에만 수행하게 된다.
10분, 30분 → 10, 30 * * * *
오전 4시 오후 4시 정각 → 0 4, 16 * * *
매 월 1일 15일 자정 → 0 0 1, 15 * *
매 년 5월 11월 1일 정오 → 0 12 1 5,11 *
월, 수, 금 오후 2시 30분 → 30 2 * * 2,4,6
④ /
주기적으로 호출한다.
*/5 * * * * → 매 시간 5분 마다 실행
0 */2 * * * → 매 2시간마다 정각에 실행
4. 스케줄 등록 / 수정
아래 명령어를 실행하면 빈 vi 에디터가 뜨는 데.. 스케줄을 한줄씩 입력하고, 저장(:wq)하면 스케줄이 자동으로 등록됩니다.
서비스 재시작없이 저장만 하면 "crontab: installing new crontab" 메세지가 뜨면서 스케줄이 등록됩니다.
스케줄 수정과 삭제도 마찬가지로 vi 에디터에서 스케줄 수정/삭제후 저장만 하면 됩니다.
[root@localhost cron]# crontab -e
5. 스케줄 삭제
현재 사용자의 예약작업을 모두 삭제
[root@localhost cron]# crontab -r
6. 스케줄 재실행
[root@localhost cron]# systemctl restart crond.service
참고자료
https://www.conory.com/note_linux/42268
https://zetawiki.com/wiki/리눅스_반복_예약작업_cron,_crond,_crontab
예약된 시간에 정확히 프로그램이나 명령을 실행해주는 존재.. 바로 crontab 이라고 합니다.
crontab은 리눅스의 전통적인 서비스인데... 늘 상주해있다가 스케줄러에 있는 시간이 되면 정해진 명령을 실행해줍니다.
예로 든 백업뿐만 아니라 이걸 이용하면 예약 메일보내기도 가능하죠.
1. crontab 살펴보기
등록한 스케줄 파일은 /var/spool/cron 에 있으며, 계정별로 스케줄 파일들이 정리되어있습니다.
root를 비롯해서 일반계정에서도 스케줄 등록을 할 수 있습니다.
예를 들어, /var/spool/cron/root 파일에는 root 계정에서 등록한 스케줄이 있습니다.
[root@localhost cron]# ls /var/spool/cron
2. 스케줄 목록 확인
crontab에 있는 스케줄 확인 명령어는 다음과 같습니다.
2-1. 현재사용자
[root@localhost cron]# crontab -l
no crontab for root
2-2. 현재사용자
[root@localhost cron]# crontab -l -u testuser
no crontab for testuser
3. 등록 형식
스케줄은 아래와 같은 형식을 하고 있습니다.
* * * * * 수행할 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일) 또는 sun, mon, tue, wed thu, fri, sat
│ │ │ └───────── 월 (1 - 12) 또는 jan,feb, mar, apr ... 축약형 영문 월 표시
│ │ └───────── 일 (1 - 31)
│ └───────── 시 (0 - 23) (자정이 0)
└───────── 분 (0 - 59)
범위 지정에 사용할 수 있는 연산자
① *
해당 범위 모두 수행하게 된다.
매분 마다 실행되게 하고 싶다 → * * * * *
매 시간 정각에 실행되게 하고 싶다 → 0 * * * *
매 일 오전 03시에 실행되게 하고 싶다 → 0 3 * * *
매 달 25일 자정에 실행되게 하고 싶다 → 0 0 25 * *
매 해 1월 1일 오후 2시에 실행되게 하고 싶다 → 0 14 1 1 *
매 주 화요일 오전 03시 30분에 실행되게 하고 싶다 → 30 3 * * 2
② -
해당 구간은 모두 수행하게 된다.
매 시간 10분에서 30분까지 매 분마다 실행되게 하고 싶다 → 10-30 * * * *
오후 7시에서 11시까지 매 시간마다 실행되게 하고 싶다 → 0 7-11 * * *
매 월 20일에서 28일까지 자정에 실행되게 하고 싶다 → 0 0 20-28 * *
매 해 3월에서 6월까지 1일 오전 03시 30분에 실행되게 하고 싶다 → 30 3 1 3-6 *
평일 오전 03시에만 실행되게 하고 싶다 → 0 3 * * 1-5
③ ,
특정 시간대에만 수행하게 된다.
10분, 30분 → 10, 30 * * * *
오전 4시 오후 4시 정각 → 0 4, 16 * * *
매 월 1일 15일 자정 → 0 0 1, 15 * *
매 년 5월 11월 1일 정오 → 0 12 1 5,11 *
월, 수, 금 오후 2시 30분 → 30 2 * * 2,4,6
④ /
주기적으로 호출한다.
*/5 * * * * → 매 시간 5분 마다 실행
0 */2 * * * → 매 2시간마다 정각에 실행
4. 스케줄 등록 / 수정
아래 명령어를 실행하면 빈 vi 에디터가 뜨는 데.. 스케줄을 한줄씩 입력하고, 저장(:wq)하면 스케줄이 자동으로 등록됩니다.
서비스 재시작없이 저장만 하면 "crontab: installing new crontab" 메세지가 뜨면서 스케줄이 등록됩니다.
스케줄 수정과 삭제도 마찬가지로 vi 에디터에서 스케줄 수정/삭제후 저장만 하면 됩니다.
[root@localhost cron]# crontab -e
5. 스케줄 삭제
현재 사용자의 예약작업을 모두 삭제
[root@localhost cron]# crontab -r
6. 스케줄 재실행
[root@localhost cron]# systemctl restart crond.service
참고자료
https://www.conory.com/note_linux/42268
https://zetawiki.com/wiki/리눅스_반복_예약작업_cron,_crond,_crontab
댓글목록
등록된 댓글이 없습니다.