*해당 정보는 Rocky Linux 9.4를 기반으로 한 정보입니다
1. 디렉토리(Directiory)란?
Linux에서 디렉토리(Directioy)란 Windows의 폴더와 유사한 개념으로 특정 목적을 가지고 시스템 파일과 사용자 데이터를 저장하는 공간이다. 디렉토리의 특징은 계층적 구조를 가진다는 것(상위와 하위 디렉토리가 존재)이다. 디렉토리의 주소는 '/home/user1'와 같이 표현하는데, 가장 왼 쪽의 슬래시는 루트 디렉토리(Root Directioy)라고 부른다(루트 모드와는 관련 없는 개념이니 혼동하지 않길 바란다).
*Windows에서는 폴더의 주소를 '\user\user'와 같이 역슬래시를 통해 표현한다.
2. 디렉토리 관리 명령어
1. pwd
: Print Working Directiory, 현재 작업중인 디렉토리 이름 출력(현재 저장 위치를 확인할 때 사용한다).
2. ls
: 디렉토리 목록 보기
- ls: 옵션 없이 하위 파일/디렉토리 이름만 출력
- ls -l: 하위 파일/디렉토리에 대한 자세한 정보 출력 (= ll)
- ls -a: 숨김 파일까지도 출력
- ls -al: 숨김 파일 포함하여 자세하게 출력
- ls -ld: 현재 디렉토리의 정보 출력
- 파일의 종류
- - : 일반적인 파일(regular file)
- d : Directory File
- l : Symbolic Link File (Windows의 바로가기와 유사하지만 더 강력함)
*심볼릭 링크와 하드 링크에 대해서는 후에 '파일 관리' 포스팅에서 더 상세히 다루겠다.
* MAC time: 파일과 디렉토리에 대한 날짜/시간 정보
- 마지막 수정 날짜/시간 = last Modified Time/Date --> 파일의 내용을 수정했을 때
- 마지막 접근 날짜/시간 = last Accessed Time/Date --> 파일의 내용을 읽었을 때
- Meta Data 변경 날짜/시간 = last Changed Time/Date --> 파일의 메타데이터가 변경되었을때(파일이름,소유자,권한....)
3. touch
: 새로운 파일을 만들거나, 기존 파일이 존재할 경우 MAC Time을 최신으로 갱신
- 사용법: touch [파일명/디렉토리명]
- 파일이 없으면 비어있는 새로운 파일(크기가 0인 파일)을 만든다.
- 파일이 있으면 날짜만 최신으로 갱신한다(내용은 안 건드림).
4. cd
: Change Working Directory, 작업 디렉토리를 변경
5. mkdir
: make directiory, 디렉토리 생성 (Windows의 새 폴더와 유사)
6. rmdir
: remove directory, 디렉토리 삭제
(디렉토리에 등록된 파일, 디렉토리가 있으면 삭제할 수 없음)
=> rm -r, rm -rf를 통해 삭제 가능(하지만 복구가 불가능하기 때문에 주의)
7. du
: disk usage, 디렉토리 사용량 표시
- du -sh [디렉토리명] : 디렉토리내의 모든 파일/디렉토리의 용량합계 출력
- du -ah [디렉토리명] : 디렉토리내의 모든 파일에 개별용량 출력
3. 주요 디렉토리 소개
1. 최상위 디렉토리 (Root Directory) ==> /
- Linux/Unix에서는 모든 파일과 디렉토리의 경로 시작점이 루트디렉토리(Root Directory)이다.
- Windows는 드라이브별로 루트 디렉토리가 따로 있지만 Linux는 루트 디렉토리가 하나(유일)이다.
- Linux 표기(/): root/user/user1
- Windows 표기(\): C:\users\user1 , D:\user\users
2. /bin
: binary, 명령어 역할을 하는 실행 파일(executive file)을 모아놓은 디렉토리
- /bin에 저장된 명령어 실행 파일들은 이진수(binary)로 인코딩되어 컴퓨터에서 바로 실행 가능하다.
- /bin은 /usr/bin의 심볼릭 링크 파일이다
- /bin의 명령어들은 모든 사용자가 사용할 수 있는 명령어들이다 <=> /sbin
- 포함된 명령어: ls, cp, mv, rm, bash, cat...
3. /sbin
: system binary, 대부분 root mode에서 사용하는 중요한 시스템 관리 명령어 역할을 하는 실행 파일을 모아놓은 디렉토리
- /sbin은 /usr/sbin의 심볼릭 링크 파일이다
- 포함된 명령어
- ifconfig: 네트워크 인터페이스 구성
- reboot: 시스템 재부팅
- shutdown: 시스템 종료
- ...
4. /dev
: Linux가 인식한 하드웨어(SSD, DVD, CD..)에 직접 접근할 수 있게 제공되는 장치 파일, Windows의 장치관리자와 유사하다. (Windows에서 장치관리자를 여는 명령어: devmgmt.msc)
5. /etc
: etcetera, 주로 설정에 관련된 다양한 파일이 저장되어 있는 디렉토리
(Linux, Unix는 설정 사항들을 파일에 저장한다)
6. /home
: 일반 사용자(root 제외, Normal User)의 홈 디렉토리
- 사용자의 계정 별로 동일한 이름의 디렉토리가 생성되고, 해당 디렉토리는 사용자의 전용 공간으로 사용
- 해당 사용자의 개인 파일, 개인 설정 등을 저장
7. /root
: root 관리자 계정의 홈 디렉토리
*cd ~: 해당 계정의 홈 디렉토리로 이동
8. /lib
: library, 시스템의 기본적인 동작을 지원하는 라이브러리(공유 라이브러리) 파일이 포함하는 디렉토리
9. /media
: CD/DVD,USB 등을 연결할 때 사용하는 디렉토리
- Windows와 다르게 자동으로 mount되지 않고, 수동으로 mount해야 한다
- /dev/sr0: CD/DVD의 장치 파일( Windows에서는 CD/DVD,USB를 연결하면 드라이브 문자가 할당되어 바로 사용할 수 있게 되어 있다).
10. /mnt
: mount, 공유 디렉토리를 연결(mount)할 때 사용하는 디렉토리 (Windows의 공유 폴더와 유사)
11. /opt
: Optional, Add-On 프로그램이 설치되는 디렉토리
- Add-On: 추가로 설치되는 디렉토리
- Add-On 프로그램이 무조건 여기 설치되는 것은 아니고, 설치되도록 권장한다
12. /proc
: Process, 프로세스에 관련된 정보가 저장되는 디렉토리
- 프로세스(Process): 응용 프로그램의 작동 단위, 하나의 응용 프로그램은 하나 또는 그 이상의 프로세스가 작동하여 일을 한다
- 프로세스는 PID(Process ID)를 부여받는다
- 프로세스마다 PID로 디렉토리를 만들고, 그 안에 프로세스 관련 정보를 보관한다
- 프로세스 목록 보기: ps -ef(Windows의 작업 관리자와 유사)
- 주요 인덱스
- UID (User ID): 프로세스를 실행하는 사용자의 ID
- PID (Process ID): 각 프로세스에 고유하게 부여된 식별 번호
- PPID (Parent Process ID): 현재 프로세스를 생성한 부모 프로세스의 ID
- C (CPU Usage): 프로세스가 사용하는 CPU 시간의 비율
- STIME (Start Time): 프로세스가 시작된 시간
- TTY (Terminal Type): 프로세스가 연결된 터미널의 이름
- TIME (Cumulative CPU Time): 프로세스가 실행되는 동안 사용한 총 CPU 시간
- CMD (Command): 프로세스가 실행된 명령어 또는 실행 파일의 경로
13. /usr
: User System Resource, 주로 사용자들이 자주 사용하는 프로그램과 관련된 파일들이 포함된 디렉토리
- /usr/local: 소스에서 직접 설치된 프로그램이나 소프트웨어 패키지들이 저장되는 디렉토리
- /usr/share: 공유 데이터 파일들이 저장되는 디렉토리
- /usr/include: C/C++와 같은 프로그래밍 언어의 헤더 파일들이 저장되는 디렉토리
14. /var
: Variable, 자주 내용이 변경되는 파일들을 모아 놓은 디렉토리
*로그 파일(log file): 시스템, 애플리케이션, 서버 등의 동작과 이벤트를 기록하는 파일로, 문제 해결, 시스템 모니터링, 보안 감사 및 성능 분석에 중요한 역할을 한다
15. /tmp
: Temporary Directory, 임시 디렉토리
- 잠시 사용하고 버릴 임시 파일들이 들어있음
- 아무나 접근, 읽고 쓰기 가능
4. 절대 경로와 상대 경로
절대 경로: 루트 디렉토리(/)부터 시작하여 파일이나 디렉토리의 전체 경로를 지정/명시하는 것
- 현재 작업 디렉토리와 관계없이 항상 같은 위치를 참조한다
- ex) /home/user/documents/file.txt
상대 경로: 현재 작업 중인 디렉토리를 기준으로 파일, 디렉토리의 위치를 지정하는 것
- 현재 어떤 디렉토리에서 작업 중이든 상관없이 고유한 절대 경로와 다르게 현재 작업 디렉토리에 따라 경로가 달라질 수 있음
- 절대 경로에 비해 상대적으로 편리하지만, 현재 디렉토리를 알아야 참조가 가능하다(pwd 사용)
- 특수 디렉토리 참조가 가능하다
- . --> 현재 디렉토리를 의미
- .. --> 상위 디렉토리를 의미
- - --> 이전 디렉토리를 의미 (전에 있던 디렉토리로 돌아가기)
- ~ --> 현재계정의 홈디렉토리를 의미
- . --> 현재 디렉토리를 의미
- 예시
- documents/file.txt (현재 디렉토리의 documents 디렉토리 안의 file.txt 파일)
- ../logs/error.log (상위 디렉토리의 logs 디렉토리 안의 error.log 파일)
- ./scripts/run.sh (현재 디렉토리의 scripts 디렉토리 안의 run.sh 파일)
*Linux는 대소문자를 엄격하게 구분한다
힘들지만 오늘도 해낸 나를 위한 한 마디,
"All our dreams can come true, if we have the courage to pursue them", Walt Disney
나의 꿈이 반드시 이뤄질 것이라는 것에 확신을 갖고 나아가자.
'System > Linux' 카테고리의 다른 글
[Linux] 파일 소유권 & 권한 / 특수 권한 (0) | 2024.09.19 |
---|---|
[Linux] Linux 서버를 통해 PC방에서 Tetris 대결을 할 수 있게 하자! (2) | 2024.09.14 |
[Linux] 하드 링크 & 심볼릭 링크 / 파일 관리 명령어 (0) | 2024.09.12 |
[Linux] Rocky Linux에 Apache Web Service Demon 패키지 설치하기 (0) | 2024.09.12 |
[Linux] Linux 관련 기본 정보와 기초 명령어 (0) | 2024.09.11 |