공든탑앱 열기

cron과 crontab

리눅스마스터 2급 · 프로세스 관리 · 약 11분

쉽게 말하면

정해진 시각마다 같은 일을 자동으로 시키는 예약 기능이에요. '매일 새벽 2시에 백업' 같은 규칙을 한 줄로 적어 두면 알아서 실행해요. 휴대폰의 반복 알람과 같아요.

시험용 정의

cron은 정해진 시각에 작업을 반복 실행하는 스케줄러다. 데몬 crond가 매분 설정을 확인하고, 사용자는 crontab 명령으로 작업을 등록한다.

비유로 이해하기

휴대폰의 반복 알람이다. "매주 월요일 7시"처럼 규칙을 한 번 적어 두면 알아서 울린다(한 번만 울리는 알람은 at).

자세히

그림으로 보기: crontab 한 줄

매일 23시 30분
30
분
23
시
*
일
*
월
*
요일
/backup.sh
명령
평일 아침 9시 정각
0
분
9
시
*
일
*
월
1-5
요일
/report.sh
명령
*는 '매번', 1-5는 월요일부터 금요일이다. 요일의 0과 7은 일요일이다

crontab 명령

명령뜻
crontab -e내 작업 편집 (편집기 열림)
crontab -l내 작업 목록
crontab -r내 작업 전부 삭제 (주의)
crontab -u kim -eroot가 kim의 작업 편집
crontab 파일파일 내용으로 등록

시간 표기

기호뜻예
*모든 값* * * * * 매분
,여러 값0,30 → 0분과 30분 / 요일 0,6 → 일·토(주말)
-범위1-5 → 월~금
*/nn 간격*/5 → 5분마다
범위/n범위 안에서 n 간격0-59/10 → 10분마다(*/10과 같음)

파일 위치와 접근 제어

/var/spool/cron/사용자 (Debian: /var/spool/cron/crontabs/)사용자별 crontab 저장 (직접 편집하지 말고 crontab -e)
/etc/crontab시스템 crontab. 분 시 일 월 요일 사용자 명령으로 사용자 필드가 하나 더 있다
/etc/cron.d/패키지별 시스템 작업 (형식은 /etc/crontab과 같음)
/etc/cron.hourly, daily, weekly, monthly스크립트를 넣으면 주기별 실행
/etc/cron.allow있으면 여기 적힌 사용자만 crontab 사용 가능
/etc/cron.denyallow가 없을 때, 여기 적힌 사용자는 사용 불가

anacron

cron은 서버가 꺼져 있던 시각의 작업을 건너뛴다. anacron은 꺼져 있어 놓친 일·주·월 단위 작업을 켜진 뒤 실행해 준다(노트북·데스크톱용).

시험에 이렇게 나와요

확인 문제

Q1. crontab 한 줄 30 2 * * 1 /root/backup.sh는 언제 실행될까?

  1. 매일 2시 30분
  2. 매주 월요일 30분마다
  3. 매달 1일 2시 30분
  4. 매주 월요일 2시 30분
정답 보기

4번 매주 월요일 2시 30분

필드 순서는 분 시 일 월 요일이다. 30분, 2시, 일 *, 월 *, 요일 1(월요일) → 매주 월요일 새벽 2시 30분. 요일은 0과 7이 일요일.

Q2. 매주 토요일과 일요일 오전 4시 1분에 실행하는 설정은?

  1. 4 1 * * 0,6
  2. 1 4 * * 6-7
  3. 1 4 * * 0,6
  4. 1 4 0,6 * *
정답 보기

3번 1 4 * * 0,6

분 1, 시 4, 요일 0(일)·6(토).

Q3. 평일(월~금) 낮 12시 정각에 실행하는 설정은?

  1. 0 0 * * 1-5
  2. 12 0 * * 1-5
  3. 0 12 * * 1-5
  4. 0 12 1-5 * *
정답 보기

3번 0 12 * * 1-5

분 0, 시 12, 요일 1-5.

Q4. 매달 1일 오전 4시 2분에 실행하는 설정은?

  1. 2 4 * * 1
  2. 4 2 1 * *
  3. 2 4 1 * *
  4. 2 4 * 1 *
정답 보기

3번 2 4 1 * *

2 4 1 * *이다. 필드 순서가 분(2) 시(4) 일(1) 월(*) 요일(*)이다.

Q5. crontab 필드의 순서로 옳은 것은?

  1. 분 시 월 일 요일
  2. 시 분 일 월 요일
  3. 요일 월 일 시 분
  4. 분 시 일 월 요일
정답 보기

4번 분 시 일 월 요일

분 시 일 월 요일 순이다. 맨 뒤에 실행할 명령이 온다.

Q6. 매일 오후 11시 30분에 실행하는 crontab 설정은?

  1. * 23 30 * *
  2. 23 30 * * *
  3. 30 23 * * *
  4. 30 11 * * *
정답 보기

3번 30 23 * * *

30 23 * * *이다. 분 30, 시 23(24시간제)이고 나머지는 매번(*)이다.

Q7. 현재 사용자의 crontab 목록을 보는 명령은?

  1. crontab -e
  2. crontab -s
  3. crontab -r
  4. crontab -l
정답 보기

4번 crontab -l

-l(list). -r은 전부 삭제.

Q8. /etc/crontab 파일이 사용자 crontab과 다른 점은?

  1. 초 단위 필드가 있다
  2. 명령 앞에 실행할 사용자 필드가 있다
  3. 요일 필드가 없다
  4. 주석을 쓸 수 없다
정답 보기

2번 명령 앞에 실행할 사용자 필드가 있다

시스템 crontab에는 사용자 필드가 있다.

헷갈리기 쉬운 O·X

crontab의 요일 필드에서 0과 7은 모두 일요일이다.

정답 보기

O 맞는 설명이다.

crontab -r은 가장 최근 항목 하나만 삭제한다.

정답 보기

X 전부 삭제한다.

/etc/cron.allow 파일이 있으면 거기 적힌 사용자만 crontab을 쓸 수 있다.

정답 보기

O 맞는 설명이다.

*/15 * * * * 는 매시 15분에 한 번 실행된다.

정답 보기

X 15분 간격(0, 15, 30, 45분)으로 실행된다.

함께 보면 좋은 개념