한국의 서버 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에서는가상 메모리를 지원합니다. 파일 시스템 캐싱은 저장소에 미리 로드한 데이터를 메모리에 보관하여 빠른 접근을 가능하게 합니다. 이를 통해 최근 사용된 데이터를 쉽게 재사용할 수 있으며, 메모리 여유 공간에 따라 동적으로 캐싱 기능을 조절할 수 있습니다. 대표적인 캐싱 방법으로 페이지 캐싱과 버퍼 캐싱이 있습니다.페이지 캐싱은 일반 데이터 영역을 캐시합니다. 디스크 블록은 항상 미리 매핑되어 있어서 접근 속도가 빨라집니다.버퍼 캐싱은 수퍼 블록, 아이노드 등의 정보를 캐시합니다. 이를 통해 디스크 접근 성능을 개선할 수 있습니다.
로그인에서 프롬프트에 표시되는 메시지 설정 시스템의 이름, 버전, 릴리즈 정보 등의 정보가 포함
/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 [원본파일] [링크파일]