[Automation] Windows 환경에서 cron 실습하기 (with WSL)

터틀넥·2025년 7월 25일
post-thumbnail

지난 시간에는

지난 글에서는 웹사이트에서 명언 데이터를 크롤링한 뒤, CSV로 저장하고 간단한 시각화까지 해보았다. 즉, 데이터가 수집 → 가공 → 분석되는 일련의 흐름을 수동으로 경험해봤다. 그런데 여기서 중요한 물음이 하나 생긴다.

“이 작업을 매번 내가 손으로 해야 할까?”

예를 들어, 매일 자정마다 새로운 데이터를 긁어오고 싶다거나, 매주 월요일에 한 번씩 크롤링해서 갱신하고 싶다면? 이건 사람이 매번 실행 버튼을 눌러선 해결이 안 된다. 이제 자동화 즉, "딸깍"이 필요해진 순간이다.



⏱ 자동화의 첫걸음: cron

자동화를 실현하는 여러 방법 중, 가장 기본적이면서도 강력한 도구가 cron(크론)이다.

크론은 리눅스 환경에서 돌아가는 시간 기반 스케줄러로, 정해진 시간에 지정된 명령어(또는 스크립트)를 자동으로 실행시켜준다.

  • 매일 0시에 크롤링 스크립트 실행

  • 매시간 마다 특정 로그 파일 저장

  • 매주 특정 폴더를 자동 백업

이 모든 걸 사람이 하나하나 신경쓰지 않아도 자동으로 처리할 수 있다.


😥 그런데 우리는 윈도우를 쓴다

cron은 리눅스의 기본 기능이다. 문제는, 우리가 실습 환경으로 사용해온 Windows에는 크론이 없다.

물론 윈도우에도 작업 스케줄러라는 도구가 있긴 하지만, 앞으로 배우게 될 많은 자동화 도구들, 예를 들어 Airflow, Luigi 등과 같은 워크플로우들은 Linux 환경을 기본 전제로 한다.

즉, 윈도우만으로는 제대로 된 크론 실습을 하기가 어렵다.


💡 해결책: WSL (Windows Subsystem for Linux)

그래서 오늘 우리가 할 일은 다음과 같다.

1. 윈도우에서 리눅스를 설치할 수 있는 환경 만들기
→ WSL을 통해 Ubuntu 설치

2. Ubuntu 위에 cron을 설치하고 실행해보기
→ 실제로 crontab에 등록하고, 자동 실행되는지 확인

3. 실습 결과 확인
→ 1분마다 로그를 찍는 크론 작업 등록 → 로그 파일 생성 확인

이걸 통해 우리는 크론이 어떻게 작동하는지,
실제로 어떻게 설정하고 관리하는지를 직접 체험해보도록 하자.



🧱 WSL(Windows Subsystem for Linux)이란?

WSL은 윈도우 안에 리눅스 운영체제를 가상으로 실행할 수 있게 해주는 기능이다. 쉽게 말해, 윈도우 안에 리눅스 ubuntu를 하나 띄워서 터미널 명령어를 그대로 쓸 수 있는 환경이 된다.

덕분에 리눅스용 도구들(Cron 포함)을 윈도우에서도 학습하고 실습할 수 있다. 데이터 엔지니어링에서는 대부분 리눅스 기반으로 작업하기 때문에, WSL 세팅은 거의 필수 코스라고 보면 된다.


⚙️ 1. WSL 설치 방법 (윈도우10 이상)

📌 단축 명령어 (추천)

  • 가장 간단한 방법은 PowerShell에서 다음 명령어를 실행하는 것이다.
wsl --install

이 명렁어는 다음을 자동으로 수행한다.

  • WSL 기능 활성화
  • Ubuntu 기본 배포판 다운로드 및 설치
  • 재부팅 후 Linux 환경 준비 세팅

💡설치 중 팁

  • 관리자 권한으로 PowerShell을 열어야 함.
    (마우스 오른쪽 클릭 후 '관리자 권한으로 실행')

  • 설치 완료 후 재부팅이 필요할 수 있음

  • 이후 Ubuntu 콘솔을 처음 실행하면 사용자 계정과 비밀번호를 설정해야 함.

* 요로코롬 관리자 계정과 비밀번호를 설정할 수 있는 화면이 나온다.



🖥 2. Ubuntu에서 cron 설치 및 개념 확인

Ubuntu가 설치되었다면, 이제 아래 단계를 따라가자.

✅ cron 설치 확인

sudo apt update
sudo apt install cron

이미 설치되어 있다면 "이미 최신 버전입니다"라고 뜨고, 설치되지 않았다면 몇 초 안에 설치가 끝난다.

* 나는 오늘 처음 설치했었어서 잠깐의 업데이트를 수행했다.

✅ cron 서비스 시작하기

sudo service cron start

#실행되고 있다면 명령어를 입력할 수 있는 창이 뜬다.

서비스가 정상 작동 중인지 확인하려면?

sudo service cron status

#active (running)이면 크론 서비스가 제대로 켜진 것이다.

* Active 탭에서 "running"을 확인할 수 있다.



🧪 3. 간단한 실습 – 1분마다 로그 찍기

자, 이제 설치 다 했으니 이제 cron을 만들어보자. 우리는 1분마다 "Hello from cron!"이라는 문장을 로그에 남겨볼 것이다.

✅ 1. 테스트 스크립트 작성

1️⃣ 먼저 홈 디렉토리에 스크립트를 하나 만든다.

nano ~/cron_test.sh

2️⃣ 다음 내용을 입력한다.

#!/bin/bash
echo "Hello from cron! $(date)" >> ~/cron_log.txt

3️⃣저장하고 나와서, 실행 권한을 부여한다:

chmod +x ~/cron_test.sh

* 경로로 들어가서 파일의 권한을 확인해보자. 맨 앞단에 rxx(7)이 부여되어 있으면 정상이다.

✅ 2. cron 작업 등록

crontab -e

편집기에 아래 한 줄을 추가한다.

# * * * * * /home/사용자명/cron_test.sh
# 분, 시, 일, 월, 요일(0-6, 일요일 = 0)
* * * * * /home/ttneck/cron_test.sh

* 성공적으로 crontab이 등록되었다면 아래와 같이 메시지를 확인할 수 있다.



⏱ 4. 결과 확인

1~ 2분 정도 기다린 후 다음 명령어로 로그 파일을 확인해보자.

cat ~/cron_log.txt

* 성공적으로 crontab이 등록되었다면 아래와 같이 메시지를 확인할 수 있다.



✅ 5. 크론 로그 확인이 안될 때 점검사항

1분마다 크론이 실행되도록 설정했는데도 로그가 찍히지 않는다면, 아래 항목들을 순서대로 확인해보자.

1️⃣ 크론 서비스가 실행 중인지 확인

sudo service cron status

* 사진과 같이 active(running) 상태여야한다. 만약 꺼져있다면 아래 명령어로 시작하자.

sudo service cron start

2️⃣ 스크립트에 실행 권한이 있는지 확인

chmod +x ~/cron_test.sh

* 아래처럼 777은 보안상 권장되진 않는다.


3️⃣ 경로를 절대경로로 작성했는지 확인

상대경로(~/) 대신 아래처럼 절대경로를 사용하자.

/home/사용자면/cron_test.sh

4️⃣ 스크립트 안에서 사용하는 명령어의 경로도 명시

cron은 login shell이 아니기 때문에, 기본 PATH가 다를 수 있다.

#!/bin/bash
PATH=/usr/bin:/bin
echo "Hello from cron! $(date)" >> /home/사용자명/cron_log.txt

5️⃣ 표준출력/에러 로그 파일로 디버깅

cron 작업 등록 시 아래처럼 표준 출력과 에러 출력을 로그로 남겨보자.

* * * * * /home/사용자명/cron_test.sh >> /home/사용자명/cron_stdout.log 2>> /home/사용자명/cron_error.log

6️⃣ crontab 주석 여부 확인

crontab -e 편집기에서 앞에 #이 붙어있으면 주석이다.
아래처럼 #이 없이 맨 아래 줄에 추가해야 실행된다.
(누가 저런 실수하냐 ㅋㅋ 아니. 생각보다 실수 ㅈㄴ 많이 할거다.)



🧠 핵심 개념 요약

  • cron은 리눅스에서 지정한 시간마다 명령어를 자동으로 실행해주는 도구

  • WSL (Windows Subsystem for Linux) 덕분에 윈도우 환경에서도 cron 실습이 가능

  • crontab -e로 작업 등록할 때 주석(#) 처리 조심!한 칸 차이로 몇 시간 날릴 수도 있음 😇

  • 로그가 안 찍힌다? 아래 순서대로 점검해보자:

    • 크론 데몬 살아있나? → sudo service cron status

    • 경로 제대로 잡혔나? → PATH 설정 or 절대경로 쓰기

    • 실행 권한 줬나? → chmod +x script.sh

    • 로그 출력 어디로 가고 있나? → >>, 2>> 확인

    • 진짜 실행은 됐나? → /var/log/syslog에서 CRON으로 검색



✅ 마무리

이번 실습은 단순한 크론 명령어 등록을 넘어서, *WSL 환경 세팅부터 cron 설치, 실행 및 권한 부여, 로그 리디렉션까지 자동화의 기본기를 체계적으로 짚어보는 과정이었다.

오늘은 단순히 “1분마다 로그 찍기”라는 작업을 구현했지만, 그 안에는 스크립트 실행 흐름, 시스템 권한 관리, 로그 기반 디버깅 같은 실무에서 반드시 요구되는 핵심 개념들이 담겨 있다.

데이터 엔지니어링 관점에서 보면, 이건 단순한 실습이 아니라 정기 수집(스케줄링)의 출발점이다. 배치 수집, 모니터링, 장애 대응 같은 자동화 시스템의 본질은 결국 신뢰성 있는 반복 실행에서 출발한다.

이번 실습을 통해 우리는 단지 cron을 ‘써본’ 게 아니라, 자동화를 제어하고 관리할 수 있는 감각을 기르기 시작한 셈이다.



🔜 다음 시간에는?

이제 cron이 뭔지, 어떻게 쓰는지는 알게 됐다. 그렇다면 이제 실제로 우리가 만들었던 크롤링 스크립트를 이 cron에 물려 자동 실행시켜볼 차례다.

다음 글에서는:

  • 매일 자정에 실행되는 크롤링 작업 만들기

  • 로그 자동 저장 설정

  • 실행 결과 확인 및 디버깅 방법

  • 날짜별 파일 저장처럼 실무에 가까운 자동화 흐름 설계

까지 다뤄볼 예정이다. 즉, 이번엔 단순한 ‘명령어 테스트’가 아니라 “진짜 내가 만든 프로그램을 자동으로 돌려보는 첫 경험”이 될 거다.

profile
데이터 엔지니어(진) 터틀넥입니다.

0개의 댓글