본문 바로가기
리눅스,네트워크

리눅스(Linux)의 특징 및 디렉토리 구조 - 디스크 용량, 디렉토리 용량 확인

by 데이널 2023. 10. 7.

이번 포스팅에서는 리눅스의 특징에 대해 알아보도록 하겠습니다. 리눅스의 특징은 대화형 시스템, 다중 사용자 시스템, 멀티태스킹 시스템, 높은 이식성 및 확장성, 계층적 파일 시스템 등이 있습니다. 

 

 

대화형 시스템

한번은 사용해 본적 있는 윈도우에서 '명령 프롬프트' 프로그램에서 하는 방식을 말합니다. 정확히는 명령어 기반 사용자 인터페이스(CLI, Command Line Interface)라고합니다. 이를 통해 사용자와 리눅스가 대화한다고 해서 대화형 시스템입니다. 즉, 사용자가 명령어를 입력하면 유닉스는 명령의 결과를 화면에 출력합니다.

다중 사용자 시스템

다중 사용자라는 것은 네트워크를 통해 여러 사람이 같은 컴퓨터에 동시에 접속해서 작업을 할 수 있는 시스템이라는 말입니다. 예를 들어 같은 시간에 계정 A와 계정 B가 동시 접속이 가능합니다. 또 계정 A접속하고 5분 뒤 계정 A로 또 접속 할 수도 있습니다. 다중 사용자 시스템은 동시 작업을 할 수 있다는 점에서 개발 환경의 운영체제로 리눅스가 채택이 되는 강력한 이유 중 하나입니다.

멀티태스킹 시스템

하나의 컴퓨터에서 여러 작업을 동시에 수행할 수 있다는 말입니다. 즉, 컴퓨터는 동시에 여러 프로그램을 돌릴 수 있습니다. 백그라운드 프로세스에서 이미 여러 프로그램들이 돌고 있습니다. 이렇게 사용자 제어 없이 백그라운드에서 도는 프로그램들을 데몬(daemon)이라고 합니다. 그리고 일반 사용자도 프로그램을 백그라운드로 돌리는 것이 가능합니다. 

높은 이식성 및 확장성

첫째, 높은 이식성

  • 리눅스는 약간의 어셈브리와 대부분의 C언어로 작성되어 있음
  • C를 컴파일 할 수 있으며, 어셈블리 부분만 새롭게 만들고 C부분을 다시 컴파일 함으로써 쉽게 다른 시스템에 이식 할 수 있음
  • 대부분 환경에서 C언어를 기본적으로 지원하기 때문에, 높은 확장성을 가지고 있다고 볼 수 있음
  • 단, Java 또한 개별 Host OS 위에 맞는 JVM(Java Virtual Machine, 자바가상환경)을 설치하여 JVM 위에서 모든 프로그램을 똑같이 실행 할 수 있는 구조임

둘째, 높은 확장성

  • 리눅스는 상업용 유닉스(UNIX)의 모든 특성을 가지며 유닉스의 표준인 포직스(POSIX)를 준수하고 있어 커널, 장치드라이버, 라이브러리, 응용프로그램, 개발도구 등 리눅스의 원시코드를 쉽게 접할 수 있음
  • 프로그램에서 더 나은 개발 환경을 고려할 때는 언어 뿐 아니라 개발자와 운영, 유지보수 방안 등 복합적 요소를 고려하여 최적의 환경 선택 가능
  • 단, C언어처럼 가벼운 언어는 하드웨어를 조금 더 정밀하게 프로그래밍 가능하여 빠르지만, 일반인이 프로그래밍을 할 때 객체지향 언어보다는 시간이 많이 걸리고, 메모리에 대한 이해 등 개발 시간이 더 걸릴 수 있음

계층적 파일 시스템

리눅스의 파일 시스템은 최상위 디렉토리부터 아래로 진행되는 트리 형식의 구조를 가지고 있습니다. 

Disk 용량 확인 : 리눅스 시스템 전체의(마운트된) 디스크 사용량 확인 가능(ebs)

  • df –h or –g
  • df .   (현 디스크 용량만)
  • df –T (디스크 타입)

디렉토리 용량 확인

  • du –a
  • du –sh   (총 사용량)
  • du –sh * (한단계 하위까지)

디렉토리 용량 확인
디스크 용량 확인 및 디렉토리 용량 확인

여기서 부터는 리눅스의 각 디렉토리 구조의 이름과 설명입니다. 

위치 이름 설명
/ 루트 최상위(루트) 디렉토리
디렉토리들의 절대 경로를 표기할 때 이 디렉토리로 부터 시작함
/bin 바이너리 이진파일(실행파일)
기본적인 명령어가 저장된 디렉토리 : 리눅스에서 자주 사용하는 mv, cp, rm등과 같은 명령어들이 이 디렉토리에 존재함
/sbin 시스템 바이너리 시스템 바이너리(시스템 관련 실행파일)
shutdown, ifconfig, ethtool, halt, e2fsck
와 같은 시스템 명령어들을 저장하고 있는 디렉토리
/boot 부트 리눅스의 부팅에 필요한 정보를 가진 파일들이 있는 디렉토리
/dev 디바이스 시스템 디바이스(장치)파일을 저장하고 있는 디렉토리
/dev/sda (하드디스크 장치파일), /dev/cdrom(CD-ROM)장치파일 등과 같은 장치 파일들이 여기에 위치

예를들어 마우스, 키보드등의 디바이스와 관련된 파일들
/etc  etc 설정 파일을 두는 디렉토리(, /etc/passwd, /etc/group, /etc/hosts)
/home 사용자들의 홈디렉토리가 있는 곳(, /home/airflow)
사용자를 추가하면 사용자의 id와 동일한 디렉토리가 이곳에 자동으로 생성
/lib 라이브러리 커널이 필요로 하는 각종 라이브러리 파일, 커널 모듈파일 등이 존재하는 디렉토리
/media 미디어 DVD, CD-ROM, USB 등의 외부 장치들의 마운트 포인트(연결)로 사용하는 디렉토리
/mnt 마운트 /media와 비슷한 기능
다만 차이점은, MediaOS에서 자동으로 마운팅해주는 포인트로 주로 사용
/opt 옵트 추가 응용프로그램 패키지 설치 장소
패키지 매니저가 자체적으로 설치
/삭제를 수행함
/proc 프로세스 '가상파일시스템' 이라고 하는 곳으로 현재 메모리에 존재하는 작업들이 파일 형태로 존재하는 곳
프로세스 정보 등 커널 관련 정보가 저장
/root 루트 관리자계정 root 사용자의 홈디렉토리 (/ 디렉토리와 다르다. 이건 사용자의 디렉토리)
/usr 유저 일반 사용자들이 사용하는 디렉토리, 생성된 사용자의 프로그램의 bin, lib 등에 저장
/var (variable files) 기타 모든 다용도로 사용될 수 있는 파일들이 저장되며 로그파일, 데이터베이스 캐싱파일, 웹서버 이미지 파일 등이 위치하는 디렉토리 -> 변경가능한 파일들
/sys 시스템 디바이스를 관리하기 위한 가상 파일 시스템 디렉토리이다
/run Run-time variable data를 관리한다. 부팅한 후의 시스템 정보를 관리하는 디렉토리이다.
/tmp 템프 임시 파일을 저장하기 위한 디렉토리이다.
재부팅 시에 삭제되며, 정기적으로 10일 정도 간격으로 삭제된다.
/lost+found 로스트 휴지통 같은 개념임