| ⬅️ 이전: 13.2 예약 및 정기구동 (cron) | 🏠 분류 목차 | 다음 ➡️ |
13.2 리눅스의 잠들지 않는 마법 시간 요정, Cron (크론)
리눅스 서버 관리는 매일 새벽 3시에 데이터베이스를 압축 백업하거나, 월말마다 휴지통(Log)을 비워주는 등 반복적이고 정기적인 백그라운드 업무가 필수적입니다. 이 일을 엔지니어가 매일 새벽 3시마다 알람을 맞추고 깨서 수동으로 칠 수는 없기 때문에, 운영체제는 시간을 감시하는 스케줄링 데몬을 제공합니다.
동작 원리: 사용자가
crontab이라는 지시서 텍스트 파일에 “언제, 어떤 쉘 스크립트를 실행해라” 라고 적어두고 자러 가면, 백그라운드에서 죽지 않고 시계만 쳐다보고 앉아있는cron 데몬이 그 시간이 도달하는 정확한 순간에 벼락처럼 명령어 방아쇠를 당겨(Trigger) 줍니다.
1. Cron 작업 지시서 작성 문법
크론은 띄어쓰기를 공간으로 인식하는 5자리의 별표(*) 암호 시스템을 사용하여 시간을 미세 구조로 세팅합니다.
1.1 5개의 별(Star) 공식
* * * * * (분 / 시간 / 일 / 월 / 요일 순서)
| 위치 | 의미 | 범위 | 설명 |
|---|---|---|---|
첫 번째 * |
분 (Minute) | 0 ~ 59 | 몇 분에 쏠까 |
두 번째 * |
시간 (Hour) | 0 ~ 23 | 몇 시에 쏠까 (24시간제) |
세 번째 * |
일 (Day) | 1 ~ 31 | 며칠 날 쏠까 |
네 번째 * |
월 (Month) | 1 ~ 12 | 몇 월에 쏠까 |
다섯 번째 * |
요일 (Weekday) | 0 ~ 6 | 무슨 요일에 쏠까 (0:일, 1:월 … 6:토) |
1.2 실무 세팅 예시 모음
30 2 * * * /backup_db.sh: [매일 새벽 2시 30분] 에 백업 스크립트를 돌려라!0 9 1 * * /mail.sh: [매달 1일 아침 9시 정각] 에 월간 메일을 쏴라!*/10 * * * * /check.sh: [10분에 한 번씩 영원히 무한 반복] 해서 사이트 에러 헬스체크 해라!
2. [실습] 나의 첫 백그라운드 자동화 스케줄 등록
크론 지시서를 직접 열고, 오늘 1분마다 특정 텍스트 파일에 글씨를 쓰도록 세팅해보는 튜토리얼입니다.
실습 1. 나의 crontab 지시서 열기
# 내 계정 전용 crontab 파일을 엽니다. (최초 실행 시 에디터 번호를 고르라 하면 1(nano)을 칩니다)
crontab -e
실습 2. 시간 예약 명령 타이핑
맨 밑줄 공백으로 내려가서 아래와 같이 적어넣고 저장(Ctrl+O, Enter, Ctrl+X)합니다.
# 매분 매초(1분마다) 자동 실행하여 텍스트 누적 시키기
* * * * * echo "크론 요정이 1분마다 글씨를 남기고 있습니다!" >> /home/ubuntu/cron_test.txt
실습 3. 크론 등록 확인 및 결과 점검
# 내 지시서가 잘 꽂혀 있는지 리스트를 봅니다.
crontab -l
# 이제 아무것도 안하고 3분 정도 멍하니 기다린 뒤에 텍스트 파일이 생겼는지 열어봅니다!
cat /home/ubuntu/cron_test.txt
| ⬅️ 이전: 13.2 예약 및 정기구동 (cron) | 🏠 분류 목차 | 다음 ➡️ |
서브목차