서버 운영이나 개발을 하다 보면 리눅스를 매일 쓰게 되지만, 정작 "커널이 뭐고 셸이 뭔지", "왜 배포판마다 명령어가 조금씩 다른지" 같은 기본 개념은 제대로 정리 안 하고 넘어가는 경우가 많습니다.
이번 글에서는 리눅스를 이루는 기본 구조와, 실무에서 꼭 알아야 하는 파일 시스템 · 권한 · 프로세스 개념을 한 번에 정리해보겠습니다.
리눅스란 무엇인가
엄밀히 말하면 "리눅스(Linux)"는 운영체제 전체가 아니라 커널(kernel)을 가리키는 이름입니다. 1991년 리누스 토르발스가 공개한 오픈소스 커널이 그 시작이고, 여기에 GNU 프로젝트의 각종 유틸리티(bash, coreutils 등)와 패키지 관리자, 설치 프로그램 등을 묶은 것이 우리가 흔히 "리눅스"라고 부르는 배포판(distribution)입니다.
그래서 Ubuntu, Debian, CentOS/RHEL, Fedora, Arch 같은 이름들은 전부 같은 리눅스 커널을 쓰지만, 그 위에 어떤 패키지 관리자(apt, yum/dnf, pacman)와 기본 도구를 얹었는지가 다른 것뿐입니다.
리눅스 시스템 구조
리눅스가 하드웨어부터 사용자 명령까지 어떤 계층으로 이루어져 있는지 그림으로 보면 이렇습니다.

- 하드웨어: CPU, 메모리, 디스크, 네트워크 장치 등 실제 물리 자원
- 커널: 프로세스 관리, 메모리 관리, 파일 시스템, 디바이스 드라이버, 네트워크 스택을 담당하는 핵심. 하드웨어를 직접 제어하는 유일한 계층입니다.
- 셸:
bash,zsh같은 명령 해석기. 사용자가 입력한 명령을 커널이 이해할 수 있는 시스템 콜(system call)로 바꿔 전달합니다. - 응용 프로그램: 사용자가 실제로 실행하는
vim,nginx,python같은 프로그램들.
즉 사용자는 셸을 거쳐 커널에 요청을 보내고, 커널이 실제 하드웨어를 조작한 뒤 결과를 다시 돌려주는 구조입니다.
파일 시스템 계층 구조(FHS)
리눅스는 윈도우처럼 C:\, D:\ 같은 드라이브 개념이 없고, /(루트) 하나에서 시작하는 단일 트리 구조를 씁니다. 디스크나 네트워크 저장소를 추가해도 트리의 특정 디렉토리에 "마운트"해서 붙이는 방식이에요.
| 디렉토리 | 용도 |
|---|---|
/ |
루트, 모든 파일 시스템의 시작점 |
/bin, /usr/bin |
기본 실행 명령어 (ls, cp 등) |
/sbin |
시스템 관리용 명령어 (root 권한 필요한 것들) |
/etc |
시스템 설정 파일 모음 |
/home |
일반 사용자 홈 디렉토리 |
/root |
root 사용자의 홈 디렉토리 |
/var |
로그, 캐시 등 자주 변하는 데이터 (/var/log 등) |
/tmp |
임시 파일, 재부팅 시 삭제될 수 있음 |
/dev |
디스크, 터미널 등 장치 파일 |
/proc |
실행 중인 프로세스 정보 (가상 파일 시스템) |
/lib, /usr/lib |
라이브러리 파일 |
파일 권한과 소유자
리눅스의 모든 파일에는 소유자(owner) · 소유 그룹(group) · 그 외(other) 세 주체에 대해 각각 읽기(r) · 쓰기(w) · 실행(x) 권한이 부여됩니다.
$ ls -l myscript.sh
-rwxr-xr-- 1 dev devteam 220 Sep 20 10:00 myscript.sh
위 예시를 해석하면 이렇습니다.
-: 일반 파일(디렉토리면d)rwx: 소유자(dev)는 읽기·쓰기·실행 모두 가능r-x: 그룹(devteam)은 읽기·실행만 가능r--: 그 외 사용자는 읽기만 가능
이 권한은 숫자(8진수)로도 표기합니다. r=4, w=2, x=1을 더하는 방식이라 rwxr-xr--는 754가 됩니다.
chmod 754 myscript.sh # 권한을 숫자로 변경
chmod u+x myscript.sh # 소유자에게 실행 권한 추가
chown dev:devteam myscript.sh # 소유자/그룹 변경
프로세스 기본 개념
실행 중인 프로그램은 각각 고유한 PID(Process ID)를 가지며, 그 프로세스를 실행시킨 부모 프로세스는 PPID로 연결됩니다.
ps aux # 현재 실행 중인 프로세스 전체 확인
ps -ef | grep nginx # nginx 관련 프로세스만 검색
kill -9 1234 # PID 1234 프로세스 강제 종료
top # 실시간 리소스 사용량 확인
터미널에서 명령을 실행하면 기본적으로 foreground로 실행되어 셸을 점유합니다. 끝에 &를 붙이면 background로 돌리고 셸을 계속 쓸 수 있습니다.
long_running_task & # 백그라운드 실행
jobs # 백그라운드 작업 목록
fg %1 # 다시 foreground로 전환
사용자와 그룹
리눅스는 다중 사용자 운영체제로 설계되었기 때문에 사용자(user)와 그룹(group) 개념이 시스템 전반에 깔려 있습니다.
/etc/passwd: 사용자 계정 정보/etc/group: 그룹 정보root: 모든 권한을 가진 최상위 관리자 계정sudo: 일반 사용자가 일시적으로 root 권한을 빌려 명령을 실행하는 방식
whoami # 현재 사용자 확인
sudo apt update # root 권한으로 명령 실행
useradd -m dev # dev 사용자 생성(홈 디렉토리 포함)
자주 쓰는 기본 명령어
| 명령어 | 설명 |
|---|---|
pwd |
현재 디렉토리 경로 출력 |
ls -al |
숨김 파일 포함 상세 목록 출력 |
cd |
디렉토리 이동 |
cp, mv, rm |
파일 복사·이동·삭제 |
cat, less |
파일 내용 출력 |
grep |
텍스트 검색 |
find |
파일/디렉토리 검색 |
df -h |
디스크 사용량 확인 |
du -sh |
디렉토리 용량 확인 |
man <명령어> |
매뉴얼(도움말) 확인 |
마무리
정리하면 리눅스는 커널(핵심 자원 관리) + 셸(사용자 인터페이스) + 배포판별 도구로 이루어져 있고, 그 위에서 단일 트리 파일 시스템, 소유자/권한 체계, 프로세스와 사용자 개념이 동작하는 구조입니다. 이 기본기만 잡아두면 이후 서버 운영이나 셸 스크립트, 나아가 컨테이너/오케스트레이션 관련 글들도 훨씬 수월하게 읽힐 거예요.
'프로그래밍 > Linux' 카테고리의 다른 글
| 리눅스 bash_profile 완벽 정리 - .bashrc와 뭐가 다를까? (0) | 2026.09.23 |
|---|