(1) Azure VM 실습에서 Linux가 필요한 이유
클라우드에서 생성하는 서버는 그래픽 화면 없이 명령어로 조작하는 경우가 대부분이다.
Azure에서 생성하는 상당수의 VM도 Linux로 동작한다.
1) 서버 환경에서 Linux를 쓰는 이유
- 비용: 대부분의 배포판이 무료이며 라이선스 부담이 없음
- 자원 효율: 그래픽 환경 없이 동작하여 자원 사용이 적음
- 안정성: 장시간 무중단 운영에 적합
- 자동화: 명령어 기반이라 스크립트로 반복 작업을 자동화하기 쉬움
따라서 클라우드 서버를 다루려면 파일을 이동하고, 권한을 확인하고, 프로세스를 다루는 기본 명령 체계를 익혀야 한다. 이 글은 Linux 역사보다 이 조작에 필요한 구조에 집중한다.
(2) 운영체제와 Linux
운영체제(Operating System)는 하드웨어 자원을 관리하고, 사용자와 애플리케이션이 하드웨어를 사용할 수 있도록 중재하는 소프트웨어이다.
- CPU, 메모리, 디스크 같은 자원을 프로그램에 배분
- 파일과 장치에 대한 접근을 통제
- 사용자 명령을 해석하여 하드웨어에 전달
Linux는 이러한 운영체제의 한 종류로, 서버 환경에서 널리 사용된다. 정확히는 Linux는 운영체제의 핵심인 커널을 가리키며, 여기에 여러 도구가 결합되어 하나의 완성된 운영체제를 이룬다.
(3) UNIX, GNU, 배포판의 관계
Linux를 이해하려면 세 개념의 관계를 구분해야 한다.
| 구분 | 설명 |
|---|---|
| UNIX | Linux의 설계에 영향을 준 초기 운영체제 |
| Linux 커널 | UNIX 설계를 참고해 만든 운영체제 핵심 |
| GNU | 커널과 결합되는 자유 소프트웨어 도구 모음 |
Linux 커널 단독으로는 사용자가 조작하기 어렵고, 커널에 GNU 도구와 여러 소프트웨어가 결합되어야 완성된 운영체제가 된다. 이 결합체를 사용하기 쉽게 묶어 배포한 것이 배포판이다.
1) 배포판과 Ubuntu
배포판(Distribution)은 커널, 시스템 도구, 패키지 관리자, 기본 애플리케이션을 하나로 묶은 완성형 운영체제이다.
- 동일한 커널을 사용해도 구성과 관리 방식이 배포판마다 다름
- Ubuntu는 사용이 쉽고 자료가 풍부해 서버와 학습 환경에서 널리 쓰임
- Azure VM 생성 시에도 Ubuntu를 선택하는 경우가 많음
2) Microsoft와 Linux
- 과거에는 대립 관계로 인식되었으나 현재 Microsoft는 Linux를 적극 지원
- Azure에서 다수의 Linux VM이 운영됨
- Azure는 Linux 기반 워크로드를 위한 다양한 서비스를 제공
(4) Kernel, Shell, File System 구조
Linux는 크게 세 구성 요소로 나누어 이해할 수 있다.
사용자
│ 명령 입력
▼
Shell 명령을 해석하여 커널에 전달
│
▼
Kernel 하드웨어 자원을 직접 제어
│
▼
Hardware (CPU, 메모리, 디스크)
File System : 데이터를 파일과 디렉터리로 구조화
| 구성 요소 | 역할 |
|---|---|
| Kernel | 하드웨어 자원을 직접 제어하는 핵심 계층 |
| Shell | 사용자 명령을 해석해 커널에 전달하는 계층 |
| File System | 데이터를 파일과 디렉터리 구조로 관리하는 체계 |
(5) 디렉터리와 경로
Linux의 파일 시스템은 최상위 루트(/)에서 시작하는 하나의 트리 구조를 가진다. 특정 파일의 위치를 지정하는 방식은 두 가지이다.
| 구분 | 절대 경로 | 상대 경로 |
|---|---|---|
| 기준 | 항상 루트(/)에서 시작 | 현재 위치에서 시작 |
| 예시 | /home/user/data | ./data 또는 ../data |
| 특징 | 위치와 무관하게 항상 동일 | 현재 위치에 따라 달라짐 |
.은 현재 디렉터리,..은 상위 디렉터리를 의미~은 현재 사용자의 홈 디렉터리를 의미- 스크립트에서는 위치에 영향받지 않도록 절대 경로를 쓰는 경우가 많음
(6) 사용자와 파일 권한
Linux는 여러 사용자가 하나의 시스템을 공유하는 것을 전제로 설계되어, 파일마다 접근 권한을 세밀하게 구분한다.
1) 권한의 구성
권한은 대상(소유자·그룹·기타)과 종류(읽기·쓰기·실행)의 조합으로 표현된다.
- rwx r-x r--
│ │ │
│ │ └ 기타 사용자 : 읽기만
│ └───── 그룹 : 읽기, 실행
└────────── 소유자 : 읽기, 쓰기, 실행
r = 읽기 / w = 쓰기 / x = 실행
| 대상 | 의미 |
|---|---|
| 소유자(Owner) | 파일을 만든 사용자 |
| 그룹(Group) | 같은 그룹에 속한 사용자 |
| 기타(Others) | 그 외 모든 사용자 |
(7) 명령어, 옵션, 인수
Linux 명령은 일정한 구조를 가진다. 이 구조를 알면 처음 보는 명령어도 형태로 이해할 수 있다.
명령어 옵션 인수
│ │ │
ls -l /home/user
ls : 목록을 보여주는 명령어
-l : 상세 정보 형식으로 (옵션)
/home/user : 대상 위치 (인수)
- 명령어: 수행할 동작
- 옵션: 동작 방식을 조정하며 보통
-로 시작 - 인수: 동작의 대상
1) ASCII와 Unicode
명령어와 파일 내용은 문자로 저장되며, 문자를 숫자로 대응시키는 규칙이 인코딩이다.
- ASCII: 영문자와 기호를 표현하는 초기 인코딩
- Unicode: 한글을 포함한 전 세계 문자를 표현하는 확장 인코딩
- 파일 인코딩이 맞지 않으면 문자가 깨져 보일 수 있음
(8) 표준 입출력과 리디렉션
Linux의 명령은 입력과 출력의 기본 통로를 가진다. 리디렉션은 이 통로의 방향을 바꾸는 기능이다.
1) 표준 통로
- 표준 입력: 명령이 데이터를 받는 기본 통로(보통 키보드)
- 표준 출력: 명령 결과가 나가는 기본 통로(보통 화면)
- 표준 오류: 오류 메시지가 나가는 통로
2) 리디렉션 사용
ls > list.txt 결과를 화면 대신 파일에 저장 (덮어쓰기)
ls >> list.txt 결과를 파일 끝에 추가
sort < data.txt 파일 내용을 명령의 입력으로 전달
>는 출력을 파일로 보내며 기존 내용을 덮어씀>>는 기존 내용 뒤에 결과를 추가<는 파일 내용을 명령의 입력으로 사용
(9) 파이프

파이프(Pipe)는 한 명령의 출력을 다른 명령의 입력으로 곧바로 연결하는 기능이다. 리디렉션이 파일과 명령을 잇는다면, 파이프는 명령과 명령을 잇는다.
ls -l | grep data
ls -l : 파일 목록을 상세 출력
│ (출력을 다음 명령의 입력으로 전달)
grep data : 그 결과 중 'data'가 포함된 줄만 골라냄
- 여러 명령을 연결해 하나의 처리 흐름을 구성 가능
- 중간 결과를 파일로 저장하지 않고 바로 다음 명령에 전달
- 단순한 명령을 조합하여 복잡한 작업을 수행
(10) sudo와 관리자 권한
Linux에는 모든 권한을 가진 최고 관리자 계정인 Superuser(root)가 존재한다. 시스템 변경 작업은 이 권한이 있어야 수행할 수 있다.
| 명령 | 동작 |
|---|---|
| su | 다른 사용자로 전환하며, 관리자 계정으로도 전환 가능 |
| sudo | 현재 계정에서 특정 명령만 일시적으로 관리자 권한으로 실행 |
sudo apt update
sudo : 이 명령만 관리자 권한으로 실행
apt update : 패키지 목록 갱신 (관리자 권한 필요)
(11) 실습 전 필수 명령어
| 명령어 | 기능 |
|---|---|
| pwd | 현재 디렉터리 위치 확인 |
| ls | 파일과 디렉터리 목록 표시 |
| cd | 디렉터리 이동 |
| mkdir | 새 디렉터리 생성 |
| cp | 파일 복사 |
| mv | 파일 이동 또는 이름 변경 |
| rm | 파일 삭제 |
| cat | 파일 내용 출력 |
| chmod | 파일 권한 변경 |
| grep | 특정 문자열이 포함된 줄 검색 |
(12) 자료 외 보완
1) 프로세스와 서비스
- 프로세스: 실행 중인 프로그램의 단위이며 고유 번호로 식별됨
- 서비스: 백그라운드에서 상시 실행되며 요청을 처리하는 프로세스
- 웹 서버나 데이터베이스는 서비스 형태로 계속 동작함
- 실행 중인 프로세스를 확인하고 종료하는 조작이 서버 운영의 기본
2) 패키지 관리자 apt
패키지 관리자는 소프트웨어의 설치, 업데이트, 삭제를 명령 한 줄로 처리하는 도구이다. Ubuntu는 apt를 사용한다.
sudo apt update # 설치 가능한 목록 갱신
sudo apt install nginx # 소프트웨어 설치
sudo apt remove nginx # 소프트웨어 삭제
- 필요한 구성 요소를 자동으로 함께 설치
- 수동 다운로드 없이 명령으로 소프트웨어를 관리
3) SSH 접속 구조
SSH는 원격지의 서버에 암호화된 연결로 접속해 명령을 실행하는 방식이다. Azure VM에 접속하는 기본 수단이다.
- 내 컴퓨터에서 원격 서버의 셸에 접속
- 통신 구간이 암호화되어 명령과 결과가 보호됨
- 비밀번호 대신 키 기반 인증을 사용하면 보안이 강화됨
- SSH의 네트워크 원리는 개념 09에서 다룸
4) 환경 변수
- 환경 변수는 시스템과 프로그램이 참조하는 설정 값
- 실행 파일을 찾는 경로 등이 환경 변수로 지정됨
- 같은 명령이라도 환경 변수 설정에 따라 동작이 달라질 수 있음
(13) 핵심 정리
- 클라우드 서버는 명령어 기반으로 조작하며, Azure VM도 상당수가 Linux로 동작한다.
- Linux는 커널을 가리키며, GNU 도구 등과 결합되고 배포판으로 묶여 완성된 운영체제가 된다.
- Kernel은 하드웨어를 제어하고, Shell은 명령을 해석하며, File System은 데이터를 구조화한다.
- 경로는 루트에서 시작하는 절대 경로와 현재 위치 기준의 상대 경로로 구분된다.
- 파일 권한은 소유자·그룹·기타 대상과 읽기·쓰기·실행 종류의 조합으로 표현된다.
- 명령은 명령어·옵션·인수 구조를 가지며, 리디렉션은 입출력 방향을, 파이프는 명령 간 연결을 담당한다.
- 시스템 변경 작업은 관리자 권한이 필요하며, sudo로 특정 명령만 일시적으로 실행한다.
(14) 핵심 키워드
| 키워드 | 의미 |
|---|---|
| Operating System | 하드웨어를 관리하고 사용자·프로그램을 중재하는 소프트웨어 |
| Linux | 서버에서 널리 쓰이는 운영체제이자 그 커널 |
| UNIX | Linux 설계에 영향을 준 초기 운영체제 |
| Distribution | 커널과 도구를 묶은 완성형 운영체제 |
| Ubuntu | 서버와 학습에서 널리 쓰이는 Linux 배포판 |
| Kernel | 하드웨어를 직접 제어하는 운영체제 핵심 |
| Shell | 사용자 명령을 해석해 커널에 전달하는 계층 |
| File System | 데이터를 파일과 디렉터리로 관리하는 체계 |
| Permission | 파일에 대한 읽기·쓰기·실행 접근 권한 |
| Redirection | 명령의 입출력 방향을 파일로 바꾸는 기능 |
| Pipe | 한 명령의 출력을 다른 명령의 입력으로 연결 |
| sudo | 특정 명령만 일시적으로 관리자 권한으로 실행 |
(15) 연결되는 개념
- 상위 개념: 클라우드 서버 운영
- 선행 개념: Azure Compute 서비스 선택(개념 07)
- 관련 개념: 프로세스와 서비스, 패키지 관리자, SSH, 환경 변수
- 다음 학습: SSH와 원격 접속 네트워크(개념 09)
- 대응 실습 후보: Azure VM 생성 및 접속 실습(실습 02)
(16) 다음 학습
- SSH와 원격 접속(개념 09): 이 글에서 익힌 명령 조작을 원격 VM에서 수행하기 위한 접속 원리를 확인하기 위해 필요하다.
- Azure VM 생성 실습(실습 02): 실제 Linux VM을 만들고 접속해 명령어를 직접 사용해 보기 위해 필요하다.
- 스토리지와 파일 시스템(개념 11): Linux 파일 시스템이 클라우드 스토리지와 어떻게 연결되는지 확인하기 위해 필요하다.
'Cloud > Part 3. 핵심 인프라' 카테고리의 다른 글
| 14. Azure Storage 서비스 선택 (0) | 2026.07.28 |
|---|---|
| 12. Azure에서는 네트워크를 어떻게 구성하는가? (0) | 2026.07.28 |
| 11. 컴퓨터 네트워크는 데이터를 어떻게 목적지까지 전달하는가? (0) | 2026.07.27 |
| 9. Azure Compute 서비스 선택 (0) | 2026.07.27 |