본문 바로가기
Linux

cron 개념, 사용법 정리

by 오늘은강박사갈거야~~ 2021. 7. 29.
반응형

이 글은 공부하며 정리한 내용입니다. 틀리거나 보완할 점이 있다면 댓글로 알려주시면 감사하겠습니다.

 


1. 핵심 요약

  • cron은 리눅스/유닉스 기반 시스템에서 사용되는 시간 기반 작업 스케줄러이다.
  • 사용자가 원하는 특정 시간 또는 주기에 맞춰 자동으로 스크립트나 명령을 실행할 수 있도록 해준다.
  • cron 작업은 crontab 파일에 정의되며, 사용자는 crontab -e 명령어로 이를 설정할 수 있다.

2. 상세 내용 설명

2-1. cron과 crontab의 차이

  • cron: 실제로 백그라운드에서 실행 중인 데몬(daemon)으로, 지정된 시간에 작업을 실행하는 역할을 함
  • crontab: cron 작업의 설정 파일이며, 사용자마다 별도의 crontab을 가지고 설정할 수 있음 (cron + table의 줄임말)

💡 데몬(daemon)이란?

  • 시스템 부팅 시 자동 실행되어 백그라운드에서 계속 동작하는 프로그램
  • 사용자의 직접적인 명령 없이도, 시스템이나 설정에 따라 자동으로 특정 작업을 수행
  • cron도 그런 데몬 중 하나로, 시간 기반의 스케줄을 감지하여 등록된 작업을 실행

2-2. cron 동작 흐름

(아래는 실제 운영 시 알아두면 좋은 팁입니다: 로그 남기기, 실행 여부 확인 등)

  1. cron 데몬이 시스템에서 실행 중임
  2. 사용자가 crontab -e 명령어로 작업 스케줄을 설정
  3. 설정된 주기대로 명령어 또는 스크립트가 실행됨

2-3. 자주 사용하는 명령어

명령어 설명

crontab -e 크론 작업 설정/수정
crontab -l 현재 등록된 크론 작업 목록 보기
crontab -r 크론 작업 전체 삭제 (주의!)
service cron start 크론 데몬 시작
service cron restart 크론 데몬 재시작
service cron status 크론 데몬 상태 확인

시스템에 따라 systemctl 명령어를 사용하는 경우도 있음: sudo systemctl restart cron


2-4. 시간 표현 형식 (crontab 문법)

crontab의 시간 표현은 다음과 같은 5개의 필드로 구성된다:

* * * * *  <실행할 명령어>
│ │ │ │ │
│ │ │ │ └─ 요일 (0=일요일 ~ 6=토요일)
│ │ │ └─── 월 (1~12)
│ │ └───── 일 (1~31)
│ └─────── 시 (0~23)
└───────── 분 (0~59)

예시:

  • 0 3 * * * /home/user/backup.sh → 매일 오전 3시에 백업 스크립트 실행
  • */10 * * * * /home/user/ping.sh → 10분마다 실행

온라인에서 crontab 설정을 쉽게 만들 수 있는 도구도 있다:


cron은 리눅스 환경에서 매우 널리 사용되는 자동화 도구이며, 정기적인 데이터 처리, 백업, 로그 정리 등 다양한 작업에 필수적이다.

특히 데이터 엔지니어링, 서버 관리, 배치 처리 작업에서 cron은 거의 항상 쓰인다고 해도 과언이 아니다.


2-5. 로그

로그 남기기

cron은 기본적으로 실행 결과를 로그 파일에 자동 저장하지 않으므로, 명시적으로 리디렉션을 통해 로그를 남겨야 한다.

* * * * * /path/to/script.sh >> /var/log/myscript.log 2>&1
  • >>는 로그를 이어 쓰기(append)하는 연산자이고,
  • 2>&1은 에러 출력(stderr)을 일반 출력(stdout)으로 합쳐서 모두 기록하는 의미다.

cron 실행 내역 확인

Ubuntu 기준, cron 작업이 실제로 실행됐는지는 시스템 로그에서 확인할 수 있다:

grep CRON /var/log/syslog

cron 실행 실패, 권한 문제 등도 이 로그에서 추적할 수 있다.


4. 참고 자료

반응형

댓글