나는 Windows 운영체제 노트북을 쓰고 있으며 VM VirtualBox를 통해 Ubuntu Desktop Version을 사용중이다.
학교 과제로 인해 사용중이지만 리눅스 운영체제에 관심이 생겨 공부 중에 정리하고자 작성한다.
Command 'ls'를 터미널에 작성하면 현재 경로에 있는 파일 또는 폴더명이 나온다. 색깔별로 구분이 되며, 현재 내가 보고 있는 화면은 가장 바깥 폴더에서 'ls'를 쳤을 때이다. 가장 바깥 폴더로 가려면 cd / 를 작성하면 된다.
색깔로 구별되어 있는 폴더명 중에 하늘색 폴더명은 symbolic link이다. 즉, 다른 경로로 연결되어 있는 매크로이다. 터미널에 file lib 이라고 치면 symbolic link to usr/lib 이라고 뜨는 것을 볼 수 있다. 하늘생 폴더들은 전부 /usr 안으로 symbolic link가 형성되어 있음을 볼 수 있다. 과거에는 / 에 /bin, /lib과 /usr 에 있는 /bin, /lib을 나눠서 사용했지만 이제는 통합해서 /usr로 다 들어가기에 symbolic link가 형성되어 있다.
/bin
binaries 의 약자이다. 운영체제 안에 있는 앱과 프로그램 (프로세스)들이 있으며 방금 우리가 사용한 ls 도 찾을 수 있고, 터미널에서 사용 가능한 다양한 binary 를 찾을 수 있다. 예를 들어, rm, chmod 등등이 있다. 주로 kernel이 사용하는 앱과 프로그램이 들어있다.
/sbin
/superuser binary 를 줄인 것으로 sudo 코멘드와 같이 사용 가능한 앱, 프로그램이다. kernel이 사용하며 superuser 인만큼 사용에 더더욱 주의를 기울여서 사용해야 한다.
/etc
과거 유닉스 시절에는 명확히 구분하기 어려운 시스템 파일을 두는 곳이었으나 이제는 대부분의 시스템 구성 파일 (System Configuration Files)을 갖고 있다. 예를 들어, 비밀번호, 사용자 이름, 네트워크, 메모리 파티션 등등이 있으며 잘 모르는 상태에서 함부로 건들지 말자..! 리눅스는 사용자에게 많은 자유를 주지만 Kernel이 자동으로 해주거나, 함부로 파일을 수정했을 때 발생하는 일에 대해 책임질 수 있어야 한다.
/lib
library 파일이 있는 곳이다. 앱이 사용할 수 있는 다양한 라이브러리 코드가 있으며 예를 들어, sudo /lib/systemd/systemd-sleep hibernate 를 입력하면 운영체제가 램에 있는 데이터를 디스크에 옮기고 대기 모드에 들어간다. 다시 노트북을 키면 복구된다. 이처럼 다양한 라이브러리 파일들이 있는 곳이다. 시스템 곳곳에 라이브러리 코드가 있지만, 여기 있는 라이브러리 코드는 특히 kernel 작업(/bin , /sbin) 에 사용되는 용도이다.
/lib 외에도 비슷한 /lib64 /lib32 /libx32가 있다. CPU 종류를 포인터의 크기로 나누면 32-bit, 64-bit로 나눌 수 있으며 보통 x86-64 instruction set은 64-bit 이지만 32-bit인 CPU architecture도 있다. 라이브러리들 중에서는 특정 CPU architecture만 가능한 애들이 있고 그런 애들은 /lib64 /lib32 /libx32에 들어간다. /lib에는 architecture의 종류에 구애 받지 않는 라이브러리들이다.
/home
각 사용자에 대한 폴더가 모여있는 곳이다. 한 운영체제에는 다양한 사용자가 있을 수 있으며, 각 사용자마다 필요로 하는 앱이나 파일이 다를 수 있다. 따라서 각 사용자에 대한 폴더는 따로 모아서 관리한다.
/mnt
수동으로 직접 저장소나 파티션을 디렉토리에 마운트 시키는 용도이며 잘 쓰이지 않는다. 현재 나는 /mnt 폴더 안에서 ls 코맨드를 입력하면 아무것도 나오지 않는다.
/proc
ps -aux 코맨드를 입력하면 실행중인 프로세스 리스트가 나온다. 이 프로세스들은 실행되고 종료될 때마다 동적으로 /proc 안에서 생성되었다가 꺼진다. CPU 와 kernel의 정보를 담고 있는 폴더이다.
/run
시스템 프로세스가 다양한 목적으로 일시적으로 데이터를 저장하는 곳이다.
/var
variable의 약자이며 과거에는 /proc, /run처럼 동적으로 관리되는 폴더가 없어서 자주 변한다는 의미로 variable이라는 이름을 가진다. /var/log에는 다양한 기록이 담기며 시스템이 켜질 때의 기록도 담기고, 해킹을 시도 당했을 때도 기록된다. 또한 어떤 작업을 위한 spool로도 쓰인다. 예를 들어, 프린터에 작업을 요청했을 때, 다른 사용자가 이미 작업중이라면 우리는 대기해야 한다. 그럴 때 spool이 쓰인다.
/boot
이미 이름에서 티가 나지만 처음에 시스템을 시작할 때 사용된다. 당연히 건들면 안된다. 나중에 다시 시작했을 때 복구가 힘들 수도 있다!
/dev
device의 줄임말이다. 운영체제를 시작할 때 생성되며 마우스, 키보드, 하드 디스크를 디렉토리에 마운트 시킬 때 동적을 생성될 수 있으며, 이런 하드웨어 뿐만이 아니라, tty (터미널), pts(x-window) 등 device로 간주되는 애들도 존재한다.
/opt
내가 컴파일한 소프트웨어가 따로 경로를 지정해주지 않는다면 이곳에 생성될 수 있다. 다른 경로로는 /usr/local 이 있으며 이곳에 소프트웨어가 설치되면 /usr/local/bin 과 /usr/local/lib 경로가 생성된다. 결국 사용자가 경로를 어떻게 설정했냐에 따라서 컴파일한 소프트웨어가 생성되는 곳이 달라질 수 있다.
/root
위에서 언급한 /home에 각 사용자에 대한 폴더가 존재한다고 했지만 superuser를 위한 폴더는 /root 이며 일반적을 ㅗ접근 불가능하며 접근 하면 안된다.
/srv
리눅스를 서버로 사용할 때 사용하며, web server는 /srv/http에서 HTML 파일이 저장되고 , ftP 서버는 파일들이 /srv/ftp로 이동한다.
/sys
동적으로 생성되는 가상 경로이며 컴퓨터와 연결되어 있는 디바이스의 정보가 담겨있다. 마찬가지로 함부로 건들면 안되며 대부분에 동적으로 내부 파일들이 생성되고 소멸하는 가상 경로는 함부로 건들면 안된다. kernel이 자동으로 한다.
/usr
다양한 앱, 라이브러리, 문서, 아이콘 등등 많은 앱과 서비스가 공유하는 자원들을 갖고 있다.
'Computer Science' 카테고리의 다른 글
Terminal vs Console vs Shell 개념 정리 (터미널 vs 콘솔 vs 쉘) (0) | 2024.01.03 |
---|