OS & Linux 기초
모델 코드가 같아도 OS 이해가 부족하면 설치, 권한, 실행 환경에서 반복적으로 막힙니다. 이 문서는 “명령어 암기”보다 “문제 해결 순서”를 익히는 데 초점을 둡니다.학습 목표
- 프로세스, 메모리, 파일시스템, 권한의 관계를 설명할 수 있습니다.
- Linux 파일시스템 구조를 이해하고 주요 디렉터리의 역할을 알 수 있습니다.
- 경로/권한/환경변수 오류를 스스로 진단할 수 있습니다.
- systemd 서비스 관리와 리소스 모니터링 기본을 활용할 수 있습니다.
운영체제 최소 모델
- 커널: 하드웨어 자원(CPU, 메모리, 디스크)을 관리합니다.
- 사용자 공간: 앱과 셸이 동작하는 영역입니다.
- 프로세스: 실행 중인 프로그램 단위입니다.
- 파일시스템: 데이터와 설정을 경로 기반으로 관리합니다.
Linux 파일시스템 구조
| 디렉터리 | 역할 | AI/ML 관련 예시 |
|---|---|---|
/ | 루트 디렉터리 | 모든 경로의 시작점 |
/home | 사용자 홈 디렉터리 | 개인 설정, 프로젝트 코드 |
/etc | 시스템 설정 파일 | nvidia-container-runtime, 환경변수 |
/var | 가변 데이터 (로그, 캐시) | /var/log/syslog, Docker 볼륨 |
/tmp | 임시 파일 (재부팅 시 삭제) | 중간 처리 파일 |
/opt | 서드파티 소프트웨어 | CUDA, cuDNN, NCCL |
/usr/local | 사용자 설치 프로그램 | /usr/local/cuda, Python 빌드 |
/data | 데이터 마운트 (관례) | 학습 데이터, 모델 체크포인트 |
/proc | 프로세스/시스템 가상 정보 | /proc/meminfo, /proc/cpuinfo |
/dev | 장치 파일 | /dev/nvidia0 (GPU 장치) |
GPU 서버에서 CUDA는 보통
/usr/local/cuda에, 대용량 데이터는 별도 디스크를 /data에
마운트하여 사용합니다. 루트 파티션(/)에 학습 데이터를 저장하면 디스크 부족으로
시스템 전체가 영향을 받을 수 있습니다.꼭 알아야 할 명령
| 목적 | 명령 | 확인 포인트 |
|---|---|---|
| 현재 위치 확인 | pwd | 내가 어느 디렉터리에서 작업 중인지 |
| 파일 목록 확인 | ls -al | 숨김 파일, 권한, 소유자 |
| 파일 내용 확인 | cat file | 설정 값 오타 |
| 프로세스 확인 | ps aux | rg python | 실행 중인 작업과 PID |
| 리소스 확인 | top 또는 htop | CPU/메모리 과부하 |
| 디스크 사용량 | df -h, du -sh * | 용량 부족 원인 |
| GPU 확인 | nvidia-smi | GPU 사용률, 메모리, 온도 |
프로세스 관리 명령어
| 목적 | 명령 | 설명 |
|---|---|---|
| 프로세스 목록 | ps aux | 전체 프로세스 상태 확인 |
| 실시간 모니터링 | htop | CPU/메모리 사용 실시간 확인 |
| 프로세스 종료 | kill <PID> | 정상 종료 요청 (SIGTERM) |
| 강제 종료 | kill -9 <PID> | 강제 종료 (SIGKILL) |
| 백그라운드 실행 | nohup cmd & | SSH 끊어도 유지 |
| 포트 확인 | ss -tlnp 또는 lsof -i :8080 | 특정 포트를 사용하는 프로세스 확인 |
| 환경변수 확인 | env | rg CUDA | CUDA 관련 환경변수 확인 |
| 환경변수 설정 | export PATH=/usr/local/cuda/bin:$PATH | 현재 세션에 환경변수 추가 |
systemd 서비스 관리
대부분의 Linux 서버 서비스는 systemd로 관리됩니다.PM2, supervisord 같은 프로세스 매니저도 자주 사용됩니다.
systemd는 OS 수준 서비스, PM2는 Node.js 앱, supervisord는 범용 프로세스 관리에 적합합니다.
디스크 & 메모리 모니터링
문제 해결 기본 순서
자주 하는 실수 1: 상대경로/절대경로 혼동
자주 하는 실수 1: 상대경로/절대경로 혼동
./data/file.csv는 현재 디렉터리 기준 경로입니다. 터미널 위치가 바뀌면 같은 명령도 실패합니다.
팀 스크립트에서는 가능하면 프로젝트 루트 기준 경로를 일관되게 사용하세요.자주 하는 실수 2: 실행 권한 누락
자주 하는 실수 2: 실행 권한 누락
스크립트 파일에 실행 권한이 없으면 실행이 실패합니다.
chmod +x script.sh 후 재실행하세요.
#!/bin/bash (shebang)도 스크립트 첫 줄에 반드시 포함해야 합니다.자주 하는 실수 3: OOM(메모리 부족) 원인 오해
자주 하는 실수 3: OOM(메모리 부족) 원인 오해
코드 오류처럼 보이지만 실제로는 메모리 부족으로 프로세스가 종료될 수 있습니다.
대용량 데이터 로딩 시 배치 크기, 샘플 수, 캐시 사용량을 먼저 줄여보세요.
dmesg | rg oom으로 커널 OOM Killer 로그를 확인할 수 있습니다.GPU 서버에서 자주 겪는 문제
GPU 서버에서 자주 겪는 문제
nvidia-smi실행 안 됨: NVIDIA 드라이버 미설치 또는 커널 업데이트 후 불일치.- CUDA 버전 불일치:
nvcc --version과nvidia-smi의 CUDA 버전이 다를 수 있음 (드라이버 vs 런타임). - GPU 메모리 부족:
nvidia-smi로 다른 프로세스가 GPU를 점유하고 있는지 확인. CUDA_VISIBLE_DEVICES환경변수로 특정 GPU만 사용하도록 제한할 수 있습니다.
AI/ML 작업에서 특히 중요한 포인트
- 대용량 데이터 처리 전 디스크/메모리 여유를 먼저 확인합니다.
- 모델 체크포인트 경로를 고정하고, 실험마다 폴더를 분리합니다.
.env파일과 키 파일 권한을 최소화합니다. (chmod 600)- GPU 서버에서는
nvidia-smi와watch명령으로 GPU 상태를 상시 모니터링합니다. - 학습 시작 전
df -h,free -h,nvidia-smi를 습관적으로 확인합니다.
체크리스트
- 경로/권한/프로세스 3가지를 먼저 점검하나요?
- 실패 원인을 “OS 문제”와 “코드 문제”로 분리해서 기록하나요?
- 실행 환경(버전, 경로, 변수)을 재현 가능하게 남기나요?
- 디스크/메모리/GPU 리소스를 주기적으로 모니터링하나요?
- systemd/PM2 등 서비스 관리 방법을 알고 있나요?

