본문으로 건너뛰기
Linux · CLI 기초집LESSON 20

최종 실습: 게임 기록 분석 도구를 WSL 환경에서 실행·점검하기

난이도입문 → 초급
예상 시간30분
선수지식이전 강의

20강. 최종 실습: 게임 기록 분석 도구를 WSL 환경에서 실행·점검하기

1. 이번 강의에서 해결할 문제

최종 목표는 명령을 나열하는 것이 아니라 새 WSL 환경에서도 입력→분석→결과→로그 흐름을 재현하는 것입니다. 생성 파일과 남은 프로세스까지 확인해 실습을 닫습니다.

2. 학습 목표

3. 핵심 개념

완료 기준은 프로그램이 한 번 실행되는 것보다 재현성과 진단 가능성입니다. 프로젝트는 Git으로 구조를 기록하고, 런타임은 .venv로 격리하며, 스크립트는 입력과 출력 경로를 받습니다. 정상 실행과 없는 입력 파일 오류를 모두 기록하고 마지막에 파일·프로세스·환경을 확인합니다.

4. 단계별 명령어와 예시

1. Ubuntu Bash(WSL)

실행 위치: ~/projects/game-log-analyzer

대상: analyzer.py 안전한 예제 분석기

Ubuntu Bash(WSL)
cd "$HOME/projects/game-log-analyzer"
cat > analyzer.py <<'PY'
import argparse, csv, json
from collections import Counter
from pathlib import Path

parser = argparse.ArgumentParser()
parser.add_argument("--input", required=True, type=Path)
parser.add_argument("--output", required=True, type=Path)
args = parser.parse_args()

with args.input.open(encoding="utf-8", newline="") as source:
rows = list(csv.DictReader(source))
summary = {
"battles": len(rows),
"wins": sum(row["result"] == "win" for row in rows),
"players": dict(Counter(row["player"] for row in rows)),
}
args.output.parent.mkdir(parents=True, exist_ok=True)
args.output.write_text(json.dumps(summary, ensure_ascii=False, indent=2), encoding="utf-8")
PY

python3 -m venv .venv
./scripts/run-analysis.sh data/battles.csv reports/summary.json \
> reports/latest.log 2> reports/latest.error.log
printf 'exit=%s\n' "$?"
cat reports/summary.json

예상 결과: 정상 종료 상태 0과 전투 수·승리 수·플레이어별 횟수가 담긴 JSON이 표시됩니다.

2. Ubuntu Bash(WSL)

실행 위치: 프로젝트 루트

대상: 결과·로그·의도적인 없는 입력 오류

Ubuntu Bash(WSL)
grep -n '"wins"' reports/summary.json
find reports -maxdepth 1 -type f -printf '%f %s bytes\n' | sort
tail -n 10 reports/latest.log

set +e
./scripts/run-analysis.sh data/missing.csv reports/should-not-exist.json \
> reports/missing.log 2> reports/missing.error.log
missing_status=$?
set -e
printf 'expected failure exit=%s\n' "$missing_status"
tail -n 5 reports/missing.error.log
test ! -e reports/should-not-exist.json && echo '잘못된 결과 파일 없음: 정상'

예상 결과: grep·find·tail 결과와 의도적인 종료 상태 2, 입력 파일 없음 메시지, 잘못된 결과 파일이 없다는 확인이 표시됩니다.

3. Ubuntu Bash(WSL)

실행 위치: 프로젝트 루트

대상: 실습 완료 상태 체크리스트

Ubuntu Bash(WSL)
printf '%s\n' '--- 파일 ---'
find . -maxdepth 2 -type f | sort
printf '%s\n' '--- 프로세스 ---'
pgrep -af 'analyzer.py|run-analysis.sh' || echo '남은 분석 프로세스 없음'
printf '%s\n' '--- 환경 ---'
printf 'python=%s\n' "$(./.venv/bin/python --version 2>&1)"
printf 'project=%s\n' "$PWD"
git status --short

예상 결과: 생성 파일, 남은 분석 프로세스 없음, Python 버전·프로젝트 경로와 Git 변경 상태가 표시됩니다.

5. 명령어가 동작하는 이유

Python은 CSV를 명시적 UTF-8로 읽고 JSON을 새 결과 파일로 씁니다. 래퍼 스크립트는 stdout과 stderr를 별도 로그에 보내며, 의도적인 실패는 종료 상태를 저장한 뒤 결과 파일이 생기지 않았는지 확인합니다. 읽기 전용 명령으로 최종 환경을 점검합니다.

6. 자주 하는 실수와 안전한 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

최종 실습: 게임 기록 분석 도구를 WSL 환경에서 실행·점검하기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“최종 실습: 게임 기록 분석 도구를 WSL 환경에서 실행·점검하기” 작업 전 검토에서 채택해야 할 안전 기준은 무엇인가요?
  2. 문제 2“최종 실습: 게임 기록 분석 도구를 WSL 환경에서 실행·점검하기” 실습 중 ‘운영 데이터나 홈 전체를 실습 대상으로 사용’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

20강. 최종 실습: 게임 기록 분석 도구를 WSL 환경에서 실행·점검하기 미완료 상태