리눅스 기초 시리즈의 24번째 시간입니다! 지난 시간에는 코드의 차이점을 찾는 diff를 배웠습니다. 오늘은 개발자의 삶을 한 단계 더 여유롭게 만들어줄 '자동화의 꽃', **crontab**에 대해 이야기해보려 합니다.
개발을 하다 보면 매일 새벽에 데이터베이스를 백업하거나, 매주 월요일 아침에 서버 로그를 정리하는 등 **'반복적이고 규칙적인 작업'**이 생기기 마련입니다. 이걸 매번 사람이 직접 한다면 그것만큼 비효율적인 일도 없겠죠. 오늘은 리눅스가 제공하는 가장 성실한 비서, crontab 활용기를 공유합니다.
1. 나의 경험담: "데이터 유실의 공포가 만든 자동화"
제 개인 블로그 sunyjini.com의 데이터베이스를 관리하던 초창기 시절의 일입니다. 매주 일요일 밤마다 직접 접속해서 백업 파일을 만들기로 나 자신과 약속했었죠. 하지만 사람의 기억력은 믿을 게 못 되더군요. 친구와의 약속이나 피곤함 때문에 한 주, 두 주 거르기 시작했습니다.
그러다 어느 날, 설정 실수로 데이터 일부가 꼬이는 사고가 발생했습니다. 하필이면 마지막 백업이 한 달 전 것이더군요. 식은땀을 흘리며 복구 작업을 하던 그날 밤, 저는 결심했습니다. "절대 내 기억력을 믿지 말자. 리눅스에게 시키자." 그날 이후 crontab은 매일 새벽 3시, 제가 잠든 사이에도 묵묵히 백업을 수행하는 저의 가장 신뢰받는 동료가 되었습니다.
2. 크론탭(Crontab)의 언어: 마법의 별 다섯 개
crontab을 사용하려면 먼저 리눅스에게 '언제' 일을 할지 알려주는 문법을 익혀야 합니다. 바로 **다섯 개의 별(* * * * *)**입니다.
각 별의 의미:
- 분 (0-59)
- 시간 (0-23)
- 일 (1-31)
- 월 (1-12)
- 요일 (0-6, 0과 7은 일요일)
설정 예시:
- 0 3 * * *: 매일 새벽 3시 0분에 실행
- 30 9 * * 1: 매주 월요일 오전 9시 30분에 실행
- */10 * * * *: 10분마다 실행
3. Action: 나만의 자동화 작업 등록하기
이제 실제로 명령어를 입력해 볼 차례입니다.
실험 코드: 백업 스크립트 자동 실행하기
# 1. 현재 사용자의 크론탭 설정 편집창 열기
crontab -e
# (처음 실행 시 에디터를 선택하라고 나오면 1번 nano를 추천합니다)
# 2. 편집기 맨 아래에 아래 내용 추가
# 매일 새벽 4시에 backup.sh 스크립트를 실행하고 결과는 log.txt에 남겨라!
0 4 * * * /home/user/scripts/backup.sh >> /home/user/scripts/log.txt 2>&1
# 3. 저장 후 나가기 (Ctrl+O, Enter, Ctrl+X)
# 4. 등록된 작업 목록 확인
crontab -l
(▲ Action: 설정이 완료되면 이제 제가 컴퓨터 앞에 없어도 리눅스는 매일 새벽 4시만 되면 지정된 스크립트를 실행합니다. 성공이나 실패 여부는 log.txt를 통해 나중에 확인할 수 있죠.)
4. 실전 팁: 환경 변수와 경로 문제
crontab을 처음 쓸 때 가장 많이 겪는 에러는 **"터미널에선 잘 되는데 크론탭에선 안 돼요!"**입니다. 이는 크론탭이 실행될 때의 환경 변수(PATH)가 우리가 로그인했을 때와 다르기 때문입니다.
해결 방법:
- 절대 경로 사용: python 대신 /usr/bin/python3처럼 전체 경로를 써주세요.
- 로그 확인: 명령어 끝에 >> /tmp/cron_log.txt 2>&1을 붙여 에러 메시지를 꼭 파일로 남기세요. 범인은 항상 그 로그 안에 있습니다.
5. After: 진정한 시스템 운영자의 여유
crontab으로 반복 업무를 자동화하고 나니 세 가지가 달라졌습니다.
- 실수 제로: 사람이 깜빡할 일은 있어도, 리눅스 서버가 시간을 잊는 일은 없습니다.
- 시간 절약: 매일 아침 수동으로 하던 점검 업무가 사라져, 출근 후 바로 코딩에 집중할 수 있게 되었습니다.
- 심리적 안정: "백업 잘 됐겠지?"라는 의구심 대신 "로그 확인해 보자"라는 확신이 생겼습니다.
6. 마치며: 당신이 잠든 사이에도 리눅스는 일한다
리눅스 기초 24단계를 지나오며 우리는 많은 도구를 배웠습니다. 하지만 crontab은 그 도구들을 하나로 묶어 **'살아 움직이는 시스템'**으로 만드는 핵심 부품입니다. 여러분의 소중한 시간은 더 창의적인 고민에 쓰세요. 반복은 리눅스에게 맡기면 됩니다.
오늘의 인사이트: "훌륭한 개발자는 열심히 일하는 사람이 아니라, 일을 하지 않아도 시스템이 돌아가게 만드는 사람이다."
24번째 이야기를 마칩니다. 이제 여러분의 서버는 24시간 깨어 있는 자동화 기지가 되었습니다. 다음 시간에는 리눅스 시스템의 자원을 더 깊게 파고들어, **'어떤 프로세스가 네트워크를 얼마나 쓰고 있는지 확인하는 netstat와 ss 명령어'**에 대해 다뤄보겠습니다.
오늘 설정한 자동화 작업이 잘 돌아가는지 확인하는 법이 궁금하신가요? /var/log/syslog 파일에서 크론 실행 이력을 찾는 팁을 다음 포스팅에서 알려드릴까요?
'IT' 카테고리의 다른 글
| [리눅스 기초 #26] 2026년에도 여전히 WSL2인가? 설치부터 초기 최적화까지 (0) | 2026.02.03 |
|---|---|
| [리눅스 기초 #25] "이 포트 누가 쓰고 있어?" : netstat와 ss로 네트워크 통로 감시하기 (1) | 2026.02.03 |
| 리눅스 기초 #23] 틀린 그림 찾기의 달인: diff와 patch로 코드의 변화 추적하기 (1) | 2026.02.02 |
| [리눅스 기초 #22] 터미널의 엑셀과 메모장: sed와 awk로 텍스트 데이터 주무르기 (0) | 2026.02.01 |
| [리눅스 기초 #21] 터미널에도 '드레스 코드'가 있다: PS1과 테마로 나만의 작업실 꾸미기 (0) | 2026.02.01 |