본문 바로가기

학교 수업/운영체제

Ubuntu 정리

기초 지식

더보기
현재 디렉토리 .
상위 디렉토리 ..
최상위 디렉토리 /
모두 선택 *
이전 명령어 다시 실행 !!
절대경로 최상위 디렉토리부터 찾기 (ex. /etc/passwd)
상대경로 현재 있는 디렉토리부터 찾기 (ex. etc/passwd)
내용 차근차근 보기 | more
앞, 뒤 [숫자]개만 보기 | head -[숫자], | tail -[숫자]

이론 및 개요

더보기

1. 서버 시장 성장 주요 핵심 분야

한국의 서버 OS 시장은 AI 및 빅데이터 활용의 가속화로 인해 복합 연간 성장률 10% 성장할 것으로 예상됩니다. X86 기반의 차세대 서버가 도입되고 있으며, 윈도우/리눅스 서버 OS가 주요 금융권에서 도입되고 있습니다. 이에 따라 X86 기반 리눅스 서버가 주류를 이루며, 가성비가 높아서 리눅스 서버 도입이 증가할 것으로 예상됩니다.

2. 대표 배포판 종류 3가지

Ubuntu, CentOS, Debian

3. 리눅스 설치 - 메모리 및 디스크 요구사항

  최소 요구사항 적용한 요구사항
하드디스크 10GB 25GB
메모리 2GB 4GB

4. 기본 정보 확인, 도움말

정보 확인
uname -a
cat /etc/issue​


도움말

man [명령어]
[명령어] --help

5. 다중 사용자 변경

호스트키 + F1 ~ F6

6. 쉘 종류와 특징 및 기능

쉘 이름 개발자 설명
본 쉘 스티븐 본 유닉스 7에서 사용하던 근본있는 쉘
C 쉘 빌 조이 C언어로 만든 쉘, History alias 등 유용한 명령어 추가됨
tcsh 켄 그리어 C쉘과 통합해서 만듦, 자동완성 기능
ksh 데이비드 콘 본 쉘을 확장해서 만들고, C쉘의 기능 추가
bash 쉘 브라이언 폭스 지금 표준으로 쓰고 있는 쉘

7. 커널과 쉘이란?

커널은 OS의 핵심 기술로 응용프로그램과 하드웨어 사이에서 인터페이스를 구현해주고, 대부분의 시스템 자원을 관리해준다.
쉘은 Command Line Interface를 확장하여 구현되었고, 사용자와 운영체제 사이에서 인터페이스를 구현하여 사용자가 운영체제를 제어할 수 있도록 도와준다.

8. 리눅스의 파일 시스템

리눅스: EXT4
발전 가능성: 유연성/확장성

주요 특징
1. 대용량 파일 시스템
2. 저널링
3. 지연 할당
4. 블록 매핑
5. 다중 블록 할당

9. VFS - 가상 파일 시스템

파일을 여는 과정
Fread() → 시스템 콜 → VFS → EXT4 → 디바이스 드라이버 → disk

파일 시스템의 종류에 상관없이 동일한 인터페이스를 제공하여 파일 시스템에 대한 접근을 표준화 VFS는 다양한 파일 시스템을 지원하기 위해 하위 계층을 가지고 있습니다. 이 계층에는 부트 블록, 슈퍼블록, INODE 리스트 등이 있습니다. 부트 블록은 OS(커널)의 위치를 가리키며, 슈퍼블록은 파일 시스템의 구조를 인식하는 역할을 합니다. INODE 리스트는 파일과 디렉터리 목록을 가지고 있으며, VFS에서 INODE 객체를 생성하여 실제 파일과 연결합니다.

10. 캐싱

IO 작업은 반드시 성능 저하가 발생하는데, CPU, 메모리 대역폭의 차이에 따라 IO 성능도 크게 달라집니다.
이를 보완하기 위해 OS에서는 가상 메모리를 지원합니다. 파일 시스템 캐싱은 저장소에 미리 로드한 데이터를 메모리에 보관하여 빠른 접근을 가능하게 합니다. 이를 통해 최근 사용된 데이터를 쉽게 재사용할 수 있으며, 메모리 여유 공간에 따라 동적으로 캐싱 기능을 조절할 수 있습니다.
대표적인 캐싱 방법으로 페이지 캐싱과 버퍼 캐싱이 있습니다. 페이지 캐싱은 일반 데이터 영역을 캐시합니다. 디스크 블록은 항상 미리 매핑되어 있어서 접근 속도가 빨라집니다. 버퍼 캐싱은 수퍼 블록, 아이노드 등의 정보를 캐시합니다. 이를 통해 디스크 접근 성능을 개선할 수 있습니다.

기본 명령어

더보기

커널 및 배포 버전 확인

uname -a
cat /etc/issue

사용자 확인

who, id

계정 전환

su [계정명]

도움말 확인

#manual의 약자 (상세함)
man [명령어]

#--help
[명령어] --help

현재 작업중인 디렉터리의 이름을 출력

pwd

현재 위치나 특정 경로의 디렉토리 내용의 리스트 출력

ls [옵션] [파일 및 디렉토리]

ls -a # 숨김 파일까지 보기(숨김 파일 앞에는 .이 붙음)
ls -l # 파일 형식을 긴 목록 형식으로 출력
ls -i # inode 번호를 출력

ls -al ../ # 상위 폴더의 파일 및 디렉토리 보기

디렉토리 이동

cd [디렉토리 명]

파일의 내용 출력

cat [파일명]

상세 정보 출력

stat [파일&디렉토리명]

용량 확인

du [옵션] [파일&디렉토리명]

옵션
-a: 모든 정보 출력 (ALL)
-h: 관리자가 보기 쉬운 단위(Byte, Kbyte,...)로 출력 (Human)

이전에 사용했던 명령어 찾기

history

 


파일 및 디렉토리 관리

더보기

디렉토리 별 역할

/ 최상위
/bin 주요 실행 프로그램
/boot 부트 로더
/dev 장치 파일
/etc 설정 파일
/issue 로그인에서 프롬프트에 표시되는 메시지 설정
시스템의 이름, 버전, 릴리즈 정보 등의 정보가 포함
/passwd 사용자 계정 정보를 저장
UID, GID, 홈 디렉토리 경로, 쉘 경로
/shadow 사용자 계정의 패스워드(암호화 되었을 경우 앞에 $6붙음)
패스워드 만료일, 계정 잠금, 패스워드 변경 날짜 등의 정보
/shells 리눅스 시스템에서 사용 가능한 쉘 목록 저장
/group 그룹 정보가 저장된 파일
/sudoes sudo를 사용할 때 필요한 설정파일
/localtime 파일 시스템의 표준 시간대를 설정하는 파일
/login.defs 로그인 관련 기본값을 설정하는 파일
/ntp.conf NTP서버를 구성할 때 사용되는 설정파일
/home 홈 디렉토리
/lib 공유 라이브러리
/media 외부 저장소
/mnt 임시 파일 시스템
/root 관리자 홈 디렉토리

 

생성

# 파일
touch [파일명]
echo "[내용]" > [파일명]
cat > [파일명]
vi [파일명]

# 디렉토리
mkdir [폴더명]
# 하위 디렉토리까지 한 번에 생성
mkdir -p [폴더명/하위폴더명]

이름 변경

# 같은 디렉토리에 있을 경우 mv명령어로 파일&디렉토리명 변경 가능
mv [이전 파일명] [새로운 파일명]

# 이름의 일부분을 변경할 경우 주로 사용 (대량 파일도)
# rename 명령어가 없다면 => sudo apt-get install rename
# 이름 변경
rename 's/[원본이름]/[변경할이름]/' [대상파일필터]
# 확장자 변경
rename 's/\.[원본 확장자]/\.[변경할 확장자]/' *.[대상 확장자]

복사

cp [옵션] [복사할 파일&디렉토리] [복사될 파일&디렉토리]

옵션
-r: 하위 폴더 포함 복사
-v: 복사 상세 정보 출력
-i: 덮어쓸지 물어보기

삭제

# 파일 한 개
rm [파일명]

# 파일 여러 개
rm [파일명1] [파일명2] [파일명3]

# 디렉토리 내 모든 파일
rm [디렉토리 주소]/*

# 확장자가 일치하는 모든 파일
rm *.[확장자]

# 디렉토리 삭제
rm [디렉토리]

# 하위 디렉토리까지 삭제
rm -rf [디렉토리]

# 특정 파일을 찾아서 삭제
find [디렉토리 주소] -name [파일명] -delete

검색

find [디렉토리 주소] -name "[파일명]" -type [타입명] -[a/m/c]time [일] -size [사이즈] -empty

# 파일명 팁
"*[파일명]" => [파일명]으로 끝나는 파일 검색
"[파일명]*" => [파일명]으로 시작하는 파일 검색
"*[파일명]*" => [파일명]이 포함된 파일 검색

# 타입명
d: 디렉토리
f: 파일

# 타임스탬프
-atime: 접근 했던
-mtime: 변경 했던
-ctime: 생성 했던

# -empty
내용이 없는 파일 검색

# 사이즈
-1024c => 1024 바이트 미만
+512k => 512 키로바이트 이상

파일 내 특정 내용 검색

grep [옵션] "[문자열]" [파일&디렉토리명]

# 옵션
-m [숫자]: 최대로 표시될 수 있는 라인을 제한
-r: 하위 디렉토리를 포함한 모든 파일에서 검색
-n: 행의 번호를 출력
-i: 대소문자 구별X

※ 리다이렉션 가능 (testList.txt파일에 검색 결과 저장)
grep "test" /home/maca > testList.txt

하드 링크 파일 생성

# 복사와 비슷함( 같은 inode 바라봄 )
# 파일 전용
ln [원본파일] [링크파일]

심볼릭 링크 파일 생성

# 윈도우의 바로가기와 같음
# 원본파일이 삭제되면 링크파일의 정보도 삭제
# 디렉토리도 지원
ln -s [원본파일] [링크파일]

하드 링크와 심볼릭 링크의 차이점

하드링크는 원본파일과 같은 inode를 가르키고 있어서 원본 파일이 삭제되어도 내용이 보존되지만, 
심볼릭 링크는 원본 파일을 가르키는 inode를 가지고 있기에 원본 파일이 삭제되면 접근할 수 없다.
성능과 안전성도 하드링크가 더 좋다.

 


사용자 계정

더보기

생성

# 기본 생성
adduser [이름]

# 생성시 그룹 지정
useradd [옵션] [계정명]

# 옵션
-s: 쉘 경로(-s /bin/bash)
-d: 홈 디렉토리(-d /home/angel3)
-g: 그룹이름(-g [GID] 또는 [그룹명])

삭제

userdel -rf [이름]

사용자 홈 디렉토리 변경

usermod -d [새로운 디렉토리] [사용자 계정 이름]

잠금

# 잠금
usermod -L [이름]

#잠금 해제
usermod -U [이름]

사용자 계정 보안 설정하기

# 아이디의 정보 ( 비밀번호 만료, 활성화 유무, 계정 만료,... )
sudo chage -l [아이디]

# 수정하기
sudo chage [옵션] [아이디]
sudo chage -E 30 -m 5 -M 10 -W 1 maca

[옵션]
-E: 계정만기
-m: 최소 사용
-M: 최대 사용
-W: 경고일

사용자 그룹

더보기

추가

groupadd -g [GID] [그룹명]

계정을 새 그룹으로 변경

# 주 그룹
usermod -g [그룹명] [계정명]

# 보조 그룹
usermod -a -G [그룹명] [계정명]

※ 주 그룹은 -g, 보조 그룹은 -G
   그룹 뒤에 추가 -a

삭제

# 보조 그룹만 삭제 가능..
groupdel [그룹명]

파일 권한 관리

[Linux] 퍼미션(Permission) (tistory.com)

 

[Linux] 퍼미션(Permission)

퍼미션(Permission)이란? Permission, 사전적인 의미로 허락 또는 허가를 뜻하는 영어 단어이며 멀티유저 운영체제인 리눅스에서 허가 되지 않은 사람이 파일이나 디렉터리에 접근하는 것을 막고 파일

m1n5eo.tistory.com


퀴즈

더보기

2주차

3주차

4주차

5주차

 

'학교 수업 > 운영체제' 카테고리의 다른 글

운영체제 기말고사 정리  (0) 2023.06.11