✅ 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
로 확인
'CS > OS' 카테고리의 다른 글
[Linux] 로그인 셸 (Login Shell) vs 비로그인 셸 (Non-login Shell) (0) | 2025.04.17 |
---|---|
[Linux] 리눅스 로그인 환경 설정 파일 구조 정리 (0) | 2025.04.17 |
[Linux] 쉘 스크립트 실행과 프로세스 관리 (0) | 2025.04.17 |
[OS] vi 편집기 자주 사용하는 키 정리 (0) | 2025.04.03 |
[Linux] 리눅스 명령어 (0) | 2025.03.27 |
댓글