
운영체제(Operating System, OS)는 하드웨어와 소프트웨어를 연결해 주는 중간 관리자 역할을 하는 시스템 소프트웨어이다.

사용자가 키보드, 마우스 등을 통해 내린 명령을 하드웨어가 이해할 수 있도록 변환하고, 하드웨어 자원을 효율적으로 관리하여 여러 프로그램이 동시에 원활하게 실행될 수 있게 한다.
리눅스(Linux)는 1991년 리누스 토르발스(Linus Torvalds)가 개발한 오픈소스 커널을 기반으로 한 운영체제(OS)로, 서버와 배포 환경에서 가장 널리 사용된다.
가볍고 안정적이며, CLI(Command Line Interface) 중심이라 서버 관리와 자동화 작업에 적합하다. 전 세계 대부분의 서버가 리눅스를 사용하고 있다.

| 구분 | 커널(Kernel) | 배포(Distribution) | 특징 |
|---|---|---|---|
| Windows | Windows NT 커널 (마이크로소프트) | Windows 10, 11 등 (마이크로소프트에서 직접 배포) | 커널과 배포판이 하나의 회사에서 통합 개발 |
| macOS | XNU 커널 (애플) | macOS Sonoma, Ventura 등 (애플에서 직접 배포) | 하드웨어(맥)와 OS가 강하게 결합 |
| Linux | Linux 커널 (오픈소스, 리누스 토르발스 시작) | Ubuntu, Debian, Fedora 등 (다양한 단체/기업 배포) | 커널은 오픈소스, 배포판은 여러 주체가 제작 |
버추얼박스(VirtualBox)는 오라클(Oracle)에서 제공하는 무료 가상화 소프트웨어로, 한 PC 안에서 여러 개의 가상 컴퓨터를 실행할 수 있게 한다.
Windows, macOS, Linux 등 다양한 호스트 OS에서 동작하며, 그 위에 또 다른 OS(게스트 OS)를 설치해 사용할 수 있다.

우분투(Ubuntu)는 가장 대중적이고 사용자 친화적인 리눅스 배포판 중 하나로, 서버용과 데스크탑용 모두 제공된다.

버추얼박스에서 우분투를 설치하려면 다음 단계를 따른다.
리눅스는 CLI(Command Line Interface) 환경에서 명령어 사용이 필수적이다.
대표적인 우분투 명령어는 다음과 같다.
| 구분 | 명령어 | 설명 |
|---|---|---|
| 디렉토리 이동 & 경로 확인 | pwd | 현재 작업 디렉토리 경로 출력 |
cd ~ | 홈 디렉토리로 이동 | |
cd / | 루트 디렉토리로 이동 | |
ls | 현재 디렉토리의 파일/폴더 목록 표시 | |
ls -al | 숨김 파일 포함 상세 목록 표시 | |
mkdir [directory_name] | 새 디렉토리 생성 | |
rm -r [directory_name] | 디렉토리 삭제 (하위 내용 포함) | |
| 파일 읽기 & 편집 | vim hello.txt | vim 편집기로 파일 열기 |
cat hello.txt | 파일 전체 내용 출력 | |
more hello.txt | 한 화면씩 내용 출력 | |
cat -b hello.txt | 줄 번호 출력(빈 줄 제외) | |
cat -n hello.txt | 줄 번호 출력(빈 줄 포함) | |
tail hello.txt | 마지막 10줄 출력 | |
tail -5 hello.txt | 마지막 5줄 출력 | |
| 파일 생성 & 복사 & 이동 | touch [file_name] | 빈 파일 생성 |
cp hello.txt copy_hello.txt | 파일 복사 | |
cp -r test_0403 test | 디렉토리 복사 | |
mv [파일명] [폴더명] | 파일을 폴더로 이동 | |
mv [파일명] [새_파일명] | 파일 이름 변경 | |
| 검색 | grep "검색어" [파일명] | 해당 파일에서 검색어 포함된 줄 출력 |
grep -i "검색어" * | 대소문자 구분 없이 검색 | |
ls -al \| grep "검색어" | 현재 디렉토리에서 검색어 포함된 파일 표시 | |
| 사용자 관리 | sudo adduser [username] | 새 사용자 생성 |
sudo su [username] | 해당 사용자 계정으로 전환 | |
exit | 원래 사용자로 복귀 | |
sudo userdel -r [username] | 사용자와 홈 디렉토리 삭제 | |
| 프로세스 관리 | ps | 현재 사용자 프로세스 목록 표시 |
ps -e | 모든 사용자 프로세스 표시 | |
ps -ef | 전체 프로세스 상세 표시 | |
pstree | 트리 구조로 프로세스 표시 | |
ps -ef \| grep apache2 | apache2 관련 프로세스 검색 | |
sudo kill -9 [PID] | 해당 PID 프로세스 강제 종료 | |
| 서비스 관리 | sudo apt install apache2 | Apache 웹 서버 설치 |
sudo service apache2 start | Apache 서버 시작 | |
sudo service apache2 stop | Apache 서버 중지 | |
sudo service apache2 restart | Apache 서버 재시작 |
SSH(Secure Shell)는 네트워크를 통해 원격 시스템에 안전하게 접속하기 위한 프로토콜로, 암호화된 통신을 사용하므로 비밀번호나 데이터가 외부에 노출되지 않는다.
# 원격 서버 접속
ssh username@server_ip
# 파일 전송
scp localfile.txt username@server_ip:/path/to/destination