본문 바로가기
IT

[리눅스 기초 #24] 잠들지 않는 성실한 조수: crontab으로 24시간 자동화 완성하기

by sunyjiny 2026. 2. 2.
반응형

리눅스 기초 시리즈의 24번째 시간입니다! 지난 시간에는 코드의 차이점을 찾는 diff를 배웠습니다. 오늘은 개발자의 삶을 한 단계 더 여유롭게 만들어줄 '자동화의 꽃', **crontab**에 대해 이야기해보려 합니다.

개발을 하다 보면 매일 새벽에 데이터베이스를 백업하거나, 매주 월요일 아침에 서버 로그를 정리하는 등 **'반복적이고 규칙적인 작업'**이 생기기 마련입니다. 이걸 매번 사람이 직접 한다면 그것만큼 비효율적인 일도 없겠죠. 오늘은 리눅스가 제공하는 가장 성실한 비서, crontab 활용기를 공유합니다.


1. 나의 경험담: "데이터 유실의 공포가 만든 자동화"

제 개인 블로그 sunyjini.com의 데이터베이스를 관리하던 초창기 시절의 일입니다. 매주 일요일 밤마다 직접 접속해서 백업 파일을 만들기로 나 자신과 약속했었죠. 하지만 사람의 기억력은 믿을 게 못 되더군요. 친구와의 약속이나 피곤함 때문에 한 주, 두 주 거르기 시작했습니다.

그러다 어느 날, 설정 실수로 데이터 일부가 꼬이는 사고가 발생했습니다. 하필이면 마지막 백업이 한 달 전 것이더군요. 식은땀을 흘리며 복구 작업을 하던 그날 밤, 저는 결심했습니다. "절대 내 기억력을 믿지 말자. 리눅스에게 시키자." 그날 이후 crontab은 매일 새벽 3시, 제가 잠든 사이에도 묵묵히 백업을 수행하는 저의 가장 신뢰받는 동료가 되었습니다.


2. 크론탭(Crontab)의 언어: 마법의 별 다섯 개

crontab을 사용하려면 먼저 리눅스에게 '언제' 일을 할지 알려주는 문법을 익혀야 합니다. 바로 **다섯 개의 별(* * * * *)**입니다.

각 별의 의미:

  1. 분 (0-59)
  2. 시간 (0-23)
  3. 일 (1-31)
  4. 월 (1-12)
  5. 요일 (0-6, 0과 7은 일요일)

설정 예시:

  • 0 3 * * *: 매일 새벽 3시 0분에 실행
  • 30 9 * * 1: 매주 월요일 오전 9시 30분에 실행
  • */10 * * * *: 10분마다 실행

3. Action: 나만의 자동화 작업 등록하기

이제 실제로 명령어를 입력해 볼 차례입니다.

실험 코드: 백업 스크립트 자동 실행하기

Bash
 
# 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)가 우리가 로그인했을 때와 다르기 때문입니다.

해결 방법:

  1. 절대 경로 사용: python 대신 /usr/bin/python3처럼 전체 경로를 써주세요.
  2. 로그 확인: 명령어 끝에 >> /tmp/cron_log.txt 2>&1을 붙여 에러 메시지를 꼭 파일로 남기세요. 범인은 항상 그 로그 안에 있습니다.

5. After: 진정한 시스템 운영자의 여유

crontab으로 반복 업무를 자동화하고 나니 세 가지가 달라졌습니다.

  • 실수 제로: 사람이 깜빡할 일은 있어도, 리눅스 서버가 시간을 잊는 일은 없습니다.
  • 시간 절약: 매일 아침 수동으로 하던 점검 업무가 사라져, 출근 후 바로 코딩에 집중할 수 있게 되었습니다.
  • 심리적 안정: "백업 잘 됐겠지?"라는 의구심 대신 "로그 확인해 보자"라는 확신이 생겼습니다.

6. 마치며: 당신이 잠든 사이에도 리눅스는 일한다

리눅스 기초 24단계를 지나오며 우리는 많은 도구를 배웠습니다. 하지만 crontab은 그 도구들을 하나로 묶어 **'살아 움직이는 시스템'**으로 만드는 핵심 부품입니다. 여러분의 소중한 시간은 더 창의적인 고민에 쓰세요. 반복은 리눅스에게 맡기면 됩니다.

오늘의 인사이트: "훌륭한 개발자는 열심히 일하는 사람이 아니라, 일을 하지 않아도 시스템이 돌아가게 만드는 사람이다."


24번째 이야기를 마칩니다. 이제 여러분의 서버는 24시간 깨어 있는 자동화 기지가 되었습니다. 다음 시간에는 리눅스 시스템의 자원을 더 깊게 파고들어, **'어떤 프로세스가 네트워크를 얼마나 쓰고 있는지 확인하는 netstat와 ss 명령어'**에 대해 다뤄보겠습니다.

오늘 설정한 자동화 작업이 잘 돌아가는지 확인하는 법이 궁금하신가요? /var/log/syslog 파일에서 크론 실행 이력을 찾는 팁을 다음 포스팅에서 알려드릴까요?

반응형