본문 바로가기
CS/OS

[Linux] Crontab 개념 정리

by clolee 2025. 4. 17.

✅ Crontab을 활용한 주기적 작업 자동화 실습 정리


🧠 크론탭(Crontab)이란?

  • Crontab (cron table) 은 리눅스에서 특정 시간마다 명령어를 자동 실행하기 위한 예약 시스템입니다.
  • 우리가 자주 쓰는 정기적인 작업(배치 작업)을 자동으로 실행시켜주는 역할을 합니다.

예: 매일 새벽 3시, 교통카드사의 결제 데이터를 서버에서 추출해서 카드사로 전송

→ 이런 걸 배치(batch) 작업이라고 하며, 보통 크론탭이 이를 자동 실행해줍니다.

 


✅ 실습 흐름 정리

crontab -e 입력

crontab -e
  • no crontab for 사용자명 – using an empty one → 현재 등록된 크론탭이 없음
  • 에디터를 선택하라는 메시지가 뜸 (한 번만 뜨고, 이후엔 생략됨)

🔹 편집기 선택 화면

Select an editor. To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]:
  • 2를 선택하면 vim.basic으로 크론탭 편집기가 열립니다.
  • 이는 append mode로, 기존 내용을 보존하고 명령을 추가합니다.

② 편집기 내에서 크론탭 설명 주석 확인

# Edit this file to introduce tasks to be run by cron.
# Each task to run has to be defined through a single line...
...
# m h dom mon dow   command
  • 위 설명은 크론탭 시간 필드의 형식과 용도를 알려주는 도움말입니다.
  • 실제 명령어는 이 주석 아래에 한 줄씩 추가해야 하며, 주석(#)을 빼고 작성해야 합니다.

③ 작업 추가 예시

* * * * * /home/myuser/shell/aa.sh >> /home/myuser/shell/a_out.log 2>&1

✔️ 구성 요소 설명

항목 설명
* * * * * 매 분마다 실행 (분 시 일 월 요일)
/home/myuser/shell/aa.sh 실행할 쉘 스크립트의 절대경로
>> 기존 로그 파일에 추가(append)
/home/myuser/shell/a_out.log 표준 출력 로그 파일
2>&1 표준 에러 출력도 같은 파일로 리다이렉션

결과적으로 이 명령은 매 분마다 스크립트를 실행하고, 실행 결과와 에러를 모두 a_out.log에 저장합니다.


✅ 작업 등록 후 확인

crontab -l
  • 현재 사용자 계정에 등록된 모든 crontab 작업 목록을 출력
  • 실수 방지를 위해 꼭 등록 직후 확인하세요.

⚠️ 주의: crontab -r 명령 사용 금지

crontab -r
  • 이 명령은 현재 사용자의 모든 크론탭 작업을 삭제합니다.
  • 실수로 실행하면 복구 불가능하며, 다른 작업자와 협업 중이면 다른 사람이 등록한 작업까지 날릴 수 있음
  • 쓰지 않는 항목은 지우지 말고 주석(#) 처리하는 것이 안전한 실무 관행입니다.

✅ 크론탭 시간 필드 형식 요약

# ┌───────────── 분 (0 - 59)
# │ ┌─────────── 시 (0 - 23)
# │ │ ┌───────── 일 (1 - 31)
# │ │ │ ┌─────── 월 (1 - 12)
# │ │ │ │ ┌───── 요일 (0 - 7, 일요일은 0 또는 7)
# │ │ │ │ │
# * * * * * <실행할 명령어>

📌 예시

설정 의미
0 3 * * * 매일 새벽 3시에 실행
*/10 * * * * 10분마다 실행
0 0 * * 0 매주 일요일 자정에 실행

✅ log 출력 리다이렉션 설명

  • >>: 로그 파일에 추가
  • >: 로그 파일 덮어쓰기
  • 2>&1: 표준 에러도 표준 출력에 합쳐서 저장

📌 사용 실습 예시

  • 로그에 date 출력 추가하여 시간별 실행 확인:
  • * * * * * echo "$(date) - Hello from crontab" >> ~/cron.log 2>&1
  • .sh 파일 내 로그 출력 확인:
  • echo "실행됨: $(date)" >> ~/mylog.log

✅ 마무리 요약

  • crontab -e로 작업 추가 (vim, nano 등 편집기 선택)
  • 시간 형식은 분 시 일 월 요일
  • 로그 저장 시 >> 로그파일 2>&1 형식 권장
  • 삭제는 -r 대신 주석 처리로!
  • 작업 등록 후 항상 crontab -l로 확인

댓글