1-1. 리눅스 개요
1-1. 운영체제의 사례
- 리눅스: 리누스 토발즈가 개발 / 유닉스에 호환 /미니맥스에 불편함 느낌
- GNU 프로젝트: 리차드 스톨만이 리눅스 커널 앱 개발 + 배포판
- 유닉스: 켄 톰슨, 데니스 리치 / AT&T / C언어
- 안드로이드: C/C++ 라이브러리
- Tizen: 인텔,삼성 / Iot
- 라지비안 파이: 영국 라즈베리파이 제단/ 하드웨어
- Palm: LG/ Iot / HP로부터 받음
- QNX: 유닉스 기반/ 블랙베리/ 자동차
- 경량OS: Contiki, TinyOs, RIOT/
1-2. 리눅스 기초
- 리눅스 특징: 대부분 C언어, 소수의 어셈블리어/ 소스코드 자유/ 멀티/ 파일시스템/ 쉘:명령어 기반 / 보안:DAC
- 리눅스 기술적 특징:
- 커널: 하나의 커널 구현, 유연성, 컴파일해야함
- 가상메모리 사용: 페이징
- 스왑(swap): 메모리 확보, 스왑 아웃 = 디스크로 프로그램 이동. 스왑 인 = 메모리로 프로그램 이동/ 전용 파티션/ /etc/sysctl.conf의 vm.swapiness설정
- 동적,정적 라이브러리: 효율성/ 링커와 로더
- 파이프: 표준 출력을 표준 입력으로 보내는 ipc
- 리다이렉션: 입출력 재지정
- 가상콘솔: 여러개의 콘솔/ 그래픽 화면
1-3. 리눅스 오픈소스 라이선스
- GPL: 수정하면 공개 필수
- LGPL: 수정하면 공개 필수
- MPL: 수정하면 공개 필수
- Apache: hadoop, 상업적 이용, 배포가능,수정가능
- BSD: 조항, 배포가능,수정가능
- MIT: 배포가능,수정가능
1-4.리눅스 베포판
레드햇 계열:yum,dnf 명령어 사용
- CentOs: 페도라, 무료
- Rocky linux: CentOs 대안책, 무료
- Fedora: RPM
- Oracle
데비안 계열:apt, dpkg명령어 사용
- Ubuntu: 케노니컬, 편의성
- Raspbian: 라지베리 파이
- Kali linux: 보안
슬랙웨어 계열:
- Slackware
- Vector linux
1-5. 리눅스 클러스터
고계산용 클러스터: 고성능 계산 능력, 여러 대 묶기
부하분산 클러스터: 여러대 서버 분산
고가용성 클러스터: 부하분산 처리, 노드, 이중화 기술
1-2. 리눅스 시스템의 이해
1-6. 리눅스 하드웨어 사항
메모리: 거의 모든 메모리 지원, 64TB까지 사용가능
하드디스크: IDE,인터페이스 = /dev/hdX , S-ATA, USB,SSD,SCSI = /dev/sdX 매핑
LAN카드: 기본제공, 유선+무선 지원, 네트워크 관리자를 통해 확인
1-7.RAID
RAID 용량 + 스페어 디스크(스페어 디스크 용량도 하나 빼야함)
RAID 0: 최소 디스크:2 / 디스크 수 X 디스크 용량 (속도 빠름, 하나 오류나면 복구 x)
RAID 1: 최소 디스크:2 / (디스크 수/2) X 디스크 용량 (속도 빠름,효율성 구림, 복구 o)
RAID 2,3,4: 최소 디스크:3 / (디스크 수-1)X 디스크 용량
RAID 5: 최소 디스크:3 / (디스크 수-1) X 디스크 용량 (디스크 1개의 오류 대처가능,현장 단골)
RAID 6: 최소 디스크:4 / (디스크 수-2) X 디스크 용량 ( 디스크 2개의 오류까지 대처가능, 2차 패리티)
1-8. 부트 매니저
부트매니저= 부트로더: 보조기억장치에 있는 운영체제를 주기억장치로 로드함.
부트 매니저 종류:
LILO: 기본 표준/ 설정= /etc/lilo.conf 설정파일
GRUB: GNU 프로젝트에서 만듦/ 대화형 명령어 인터페이스, 네트워크 부팅 제공/ 설정= /boot/grub/grub.conf
GRUB2: 업그레이드 버전/ 다양한 아키텍처 지원/ 펌웨어(BIOS) 지원/ GPT지원/ 설정= /boot/grub2/grub.cfg
GRUB2 환경설정 파일: /boot/grub2/grub.cfg
수정 시: grub2-mkconfig명령어 사용
set: 옵션값 설정
default: 부팅항복 설정(0이 첫번째임)
timeout: 선택 대기 시간
linux16: 커널 이미지 경로 설정
initrd16: 램디스크 이미지 경로 설정
1-9. 리눅스 파일 디렉토리
/: 최상위 디렉토리
/bin/: 주요 명령어가 있음
/boot/: 부팅이 필요한 파일이 위치함
/dev/: 디바이스 파일 존재함
/etc/: 스크립트 파일
/home/: 로그인한 사용자 전용 홈 디렉토리
/lib/: 라이브러리 디렉토리
/root/: 루트 사용자의 디렉토리
/sbin/: 시스템 관리 명령어
/usr/: 설치된 주요 명령어
/var/: 임시 데이터 보관
1-10.로그인
Init 프로세스, systemd 프로세스의 실행레벨
1: 단일 사용자 모드= 로그인 가능
2,3: 멀티 유저 모드(터미널)= 2는 네트워크로 로그인 불가, 3은 가능
5: 멀티 유저 모드(X-원도우)= x 디스플레이 매니저를 통해 로그인
로그인 공지
/etc/issue: 로그인 전(로컬)
/etc/issue.net: 로그인 전(원격)
/etc/motd: 로그인 후(누가 로그인 했든 성공하면 메시지 표시)
로그 아웃: ctrl+d, logout, exit
1-11. 패스워드 설정 및 복구
GRUB2 패스워드 설정:
grub2-mkpasswd-pbkdf2 >> /etc/grub.d/40_custom >> set superusers="root" >> password_pbkdf2 root
복구:
1. root 패스워드를 아는 경우: grub.conf에서 설정한 항목 삭제 후 grub2-mkconfig
2. root 패스워드를 잊어버린 경우: "Troubleshooting"
chroot /mnt/sysimage
vi /etc/grub.d/40_custom
grub2-mkcontig -0/boot/grub/grub.crg
1-12: systemd
명령어
1.서비스 관리
2.타겟 유닛
3.전원관리
1-13: 리눅스 로컬 파일 시스템
fsck: file system checker = 복구 기능
ext2: 저장 문제, 복구 시간 이슈, 파일 시스템 크기 2Tib~32Tib, 파일 크기 16Gib~2Tib
ext3: 저널링 파일 시스템= 복구 기능, ext2와 크기는 같다, Htree 인덱싱 기능, ACL 접근제어
ext4: extents방식(블록 묶음)으로 단편화 해결, 지연된 할당기능(XFS,ZFS,btrfs, Reiser4) 제공, 아무튼 성능 짱
ext시리즈의 매직 넘버는 0xEF53
btrFS: 특정 파일 기능 제공, 저렴한 디스크RAID 제공, 자동 압축 기능 제공
ZFS: 볼륨 매니저 역할까지 수행
Reiserfs: 독일제 저널링 파일 시스템, 커널 2.4.1
XFS: 64비트 저널링 파일 시스템, 다양한 할당, 메타데이터 저널링 제공, 최고
1-14: X윈도우
X윈도우: 유닉스 리눅스 윈도우 시스템
X서버: 디스플레이 장치 제어, 제공
X클라이언트: 응용프로그램, 서버에서 발생한 이벤트 처리
X프로토콜: request queue, event queue
디스플레이 매니저: 로그인 매니저, 대충 로그인 할때 화면, XDM, GDM, KDM
X윈도우 실행 설정: graphical.target
X윈도우 실행: startx
xhost: 클라이언트 접근 제어
DISPLAY 환경변수: 서버 주소 설정 변수, IP 슛
xauth: .Xauthority 파일 쿠키 내용 출력
1-15: 셸
셸의 기능
1.히스토리 기능: history
- !a: a로 시작하는 가장 최근 명령어
- !?a: a를 포함하는 문자열 명령어 실행
- !!: 바로 직전 명령어 실행
- -c: 명령어 이력 지우기
2. alias 기능= 명령어 대치
ex) alias show-me-passwd='cat/ect/passwd'
앞의 명령어를 치면 뒤의 명령어가 실행됨
3.명령어 치환 기능
`command`, $command: 명령어로 실행됨
"command": 상관 없이 실행됨
'command': 문자열로 인식됨
4.표준 입출력 기능
echo: 화면으로 결과 출력
cat: 표준 입력으로부터 데이터 기다림/ cat 종료 명령어: ctrl+d
5.리다이렉션 기능
>: 표준 출력에서 지정출력으로 변경
>>: 표준 출력에서 지정출력으로 변경 후 추가
<: 표준 입력에서 지정한 입력으로 변경
<<: 프로그램 입력 여러 줄 받을 떄 사용, 지정한 문자열 입력 시 입력 종료
6.파이프 기능
명령어 | 명령어: 명령어 사이를 연결시켜 처음 명령어의 결과를 뒤 명령어의 출력에 넘김
7.그룹 명령 기능
' ; ': 나열한 명령어 실행 시 사용
ls; echo "first"
' | | ': OR 연산. 앞의 명령어의 성공시 결과 출력, 실패시 다음 명령어 실행
'&&': AND 연산, 앞의 명령어의 실행이 성공한 경우에만 다음 명령어 실행
8.산술 논리 연산 기능
expr 명령어: 산술, 논리 연산 수행
기호가 특수 기호인 경우 \,' ', " " 사용해야함
셸 프로그래밍
-셸 스크립트 형식: #!를 첫번째 줄에서 사용할 셸 명시, 두 번째 줄부터는 명령어
-셸 스크립트 실행: 프로세스로 실행, 현재 셸에서 바로 실행 2개 있음
프로세스에서 실행시 ./ 붙여야함
-셸 스크립트 문법
- 주석: #
- 변수: VAR=vlaue(VAR=변수 명, value는 변수 값)
- 조건 식(true=0, false=1): eq,ge,gt,le,lt,ne,-a,-o = 같다,같거나 크다,크다,작거나 같다,작다,같지 않다, and, or
-셸 스크립트 조건문
if문: if문 표현식이 참이면 then 명령문 실행, 아닐 시 fi구문 이후 명령문 실행/ else, elif로 추가 가능
if [ 표현식 ]
then 명령문fi 명령문
case문: $변수와 사응하는 패턴 명령문 실행
case $변수 in패턴
-셸 스크립트 반복문 for 문: 변수에 값1을 할당하고 명령문 실행, 변수에 값2 할당하고 명령문 실행for $변수 in 값1 값2 do 명령문 done
ex) for i in 1 2 3 4 5do echo "$i"done결과값:12345
while 문: 일반이랑 같음until 문: while 문이랑 같음
select 문: 메뉴중 고르고 그 명령어 반복
1-16: 프로세스 생성
exec: 현제 프로세스를 새로운 프로세스로 교체
fork: 프로세스 생성, 생성된 프로세스가 자식
1-17: 프로세스 제어
포어 그라운드 프로세스: 사용자 입력 받기 가능, 결과를 확인 가능
백그라운드 프로세스: 프로세스를 실행시켜놓기
포어 >> 백 전환: ctrl +Z 입력 후 bg로 백그라운드 실행
jobs: 실행중인 작업정보 보기
백 >> 포어 전환: fg로 포어그라운드 실행
1-18: 시그널
1: SIGUP = 연결 끊김
2: SIGINT = ctrl+C 인터럽트
3: SIGQUIT = ctrl + \
9: SIGKILL = 프로세스 강제 종료
15: SIGTERM = 프로세스 정상 종료
18: SIGCONT = STOP시그널을 통해 재개
19: SIGSTOP = 프로세스 종료
20: SIGTSTP = 프로세스 대기 시 ctrl+Z
1-19: 데몬 실행
systemctl 명령어 httpd.service
중지: stop
실행 시작: start
재시작: restart
갱신: reload
부팅 시 서비스 시작 등록: enable
1-3. 네트워크의 이해
1-20: OSI 7계층
7. 웅용: data / HTTP, DNS, SSH
6. 프레젠테이션: data / SMB
5. 세션: data / SSL
4. 전송: segment / TCP,UDP
3. 네트워크: packet / IP, ICMP, ARP
2. 데이터링크: frame / Ethernet
1. 물리: bit / RS-232, USB, Bluetooth
1-21: IP주소
A 클래스: 0~127
B 클래스: 128~191
C 클래스: 192~223
서브넷 마스크: 서브넷 마스크와 IP주소를 AND연산하면 네트워크 주소가 되고 IP주소중 서브넷 마스크의 0에 해당하는 부분이 호스트 주소다. 게이트웨이 주소는 네트워크 주소+1.
이진수로 구분하는게 제일 쉬울듯
1-22: TCP/UDP
TCP: 3way handshake로 연결 설정, 신뢰성 높음,속도 느림
UDP: 비연결형 서비스, 전송 확인 절차 없어서 빠름, 오류도 조금만 검출, 신뢰성 낮음
1-23: IP 수동 설정
/etc/stsconfig/network-scripts/ifcfg-ens33 : ip 설정 수행(주소 정보 등)
/etc/stsconfig/network-scripts/ifcfg-eth0
/etc/stsconfig/network : 시스템 연결 허용, 도메인 이름 설정, 게이트웨이 장치 파일 설정/ 시스템 적용하는 정보 입력
/etc/resolv.conf : 네임서버 설정, 기본 도메인 명 설정
/etc/hosts : 매핑 설정
1-24: 네트워크 명령어
네트워크 명령어
-ifconfig: 네트워크 인터페이스 설정 수행
인터페이스 활성화/비활성화: ifconfig eth0 up/down
-nmcli: 네트워크 매니저 클라이언트/ nmcli [options] Object (Command ㅣhelp)
-route: 시스템 설정 라우팅 테이블 표시 및 수정, 패킷 라우팅
-arp: 이더넷 기반 MAC 주소 변환, ARP 캐시 저장
네트워크 진단 명령어
-ethtool: 네트워크 인터페이스 카드를 위한 설정 도구, 네트워크 속도, 포트,자동 설정 변경
ethtool [options] interface
-ip: 시스템의 네트워크 인터페이스에 주소할당, 파라미터 설정기능 수행하는 ifconfig 대체 명령어
ip [options][command][address][dev interface]
주요[option]:
- route: 추가/삭제
- addr: IP정보 출력
- link: 상태 설정
- neighbor: ARP 캐시 관리
-ping: ICMP을 이용한 네트워크 상태 진단 도구
-nestat: 네트워크 연결, 라우팅 테이블 , 인터페이스 통계 정보 등 다양한 네트워크 정보 출력
소켓 상태 : 클라이언트와 연결 완료 시 ESTABLISHED로 표시됨
-traceroute: 패킷 추적 명령어
-mii-tool: 인터페이스 연결 상태, 설정 변경 도구
-ss: 소켓정보 제공 도구
ss [options] [filter]
[options]:
- -n: 숫자로 표기
- -r: 이름으로 표기
- -a: 모든 정보 출력
- -o: 타이머 정보 출력
- -l: 소켓 정보 출력
- ss -ltn sport le 500: 포트 500과 같거나 작은 소켓 출력하는 필터링 기능
DNS명령어
nslookup: 도메안 명 질의 명령어
dig: 위 명령어랑은 차이 거의 없고 셸에서 씀
host: 호스트의 정보를 얻는 가장 간단한 도구
hostname: 호스트이름 조회,설정하는 도구
hostnamectl: 호스트 이름 변경
네트워크 응용 프로그램
telnet: 텔넷 서버에 접속하기 위한 명령어
ftp: ftp서버에 접속하는 명령어
2023/03/11 기출
1. 리눅스 커널
리처드 스톨먼: 디버거 개발
리누스 토발즈: 리눅스 커널, 깃 개발
켄 톰슨: B언어 개발자
데니스 리치: C, 유닉스 개발자
앤드루 s 타넨비움: 유닉스 계열 미닉스 저자
2.리눅스의 기술적 특징
리다이렉션: 입출력 방향 다른 곳으로 바꿈
파이프: 표준 출력을 표준 입력으로 쓰게 함
라이브러리: 특정한 코드를 포함한 컴파일된 파일
가상 콘솔: 리눅스에서 사용가능한 가상 모니터, 여러개 실행 가능
3.RAID 용량 + 스페어 디스크(스페어 디스크 용량도 하나 빼야함)
RAID 0: 최소 디스크:2 / 디스크 수 X 디스크 용량
RAID 1: 최소 디스크:2 / (디스크 수/2) X 디스크 용량
RAID 2,3,4: 최소 디스크:3 / (디스크 수-1)X 디스크 용량
RAID 5: 최소 디스크:3 / (디스크 수-1) X 디스크 용량
RAID 6: 최소 디스크:4 / (디스크 수-2) X 디스크 용량
4.부트 매니저(GRUB= 부트로더)
비밀번호 변경 수월
부트로더 복구 파라미터: init=/bin/sh
5.ssh 데몬
systemctl enable sshd : 부팅 시 ssh 데몬을 로드함
systemctl status sshd : ssh 데몬의 현재 상태를 볼 수 있음
systemctl active sshd : active는 없는 명령어이며, 데몬의 서비스가 구동 중인 것을 확인할 땐 is-active 명령어를 사용
systemctl start sshd : ssh 데몬의 서비스를 시작
6. x윈도우 계층 및 구조
GDM (GNOME Display manager) : 윈도잉 시스템 X11과 웨이랜드를 위한 디스플레이 관리자로 위 이미지가 이에 해당
KDE (K Desktop Environment) : KDE는 다양한 운영 체제에서 구동 가능한 프로그램들을 제작하는 다국적 자유 소프트웨어 커뮤니티
GNOME : 우분투, 페도라, 데비안 등 여러 리눅스에서 사용하는 데스크톱 환경 GUI
Mutter : GNOME의 컴포지터(window manger)
7.test 명령어
테스트 명령어에서 a ㅁt b= a ~er than b이다./ 당연히 '같다(equal)'도 있다./ 조건문도 있다.(!(부정),-a(AND), -o(OR))
대부분 T/F이기 때문에 0(T)과 1(F)을 출력
-e: exist? / -f: 일반파일? / -b: block file? /-c: character file? / -d: directory file?
-r,-w,-x: read, write, execute
더 많음
8. 시그널 번호
1~20까지만 나오는 듯
9. 백그라운드,포어그라운드 명령어
ps: 프로세스 출력
kill: 프로세스 종료
jobs: 백그라운드 프로세스 출력
bg: 백그라운드로 변환
fg: 포어그라운드로 변환
CTRL+Z:백그라운드 프로세스 일시 정지
nice: 프로세스 우선순위 변경(-20 ~ 19까지 있고 -20이 가장 높은 우선순위)
nohup(no hang up):프로세스 유지
pgrep:프로세스 검색
10. OSI 계층
1층 (물리 계층) : 비트
2층 (데이터 링크 계층) : 프레임
3층 (네트워크 계층) : 패킷 혹은 UDP 데이터그램
4층 (전송 계층) : TCP 세그먼트
5,6,7층 (응용 계층) : 메시지, 데이터
물데네전세표응 - bfpsd
11. 프로토콜 제정 기관
ISO: OSI 참조모델, 프로토콜
IEEE: LAN,MAN 표준
EIA: UTP케이블 표준
ITU-T: 정부간 국제기구
12.서브넷 마스크
게이트웨이 주소= 네트워크 주소 +1
13,14.네트워크 명령어
ip : 네트워크 인터페이스, 주소, 라우터, ARP 캐시 등 네트워크 관련 정보를 조회하고 설정하는 명령어
arp : IP 주소와 MAC 주소를 매핑하는 ARP 테이블을 조회하고 관리하는데 사용되는 명령어
ifconfig : 네트워크 인터페이스를 구성하고 모니터링 하는데 사용되며, 네트워크 인터페이스를 활성 / 비활성화하고, 재설정할 수 있는 명령어
iwconfig: 무선랜 네트워크 환경 추력
ethtool : 네트워크 인터페이스의 하드웨어적인 설정값을 확인하거나 변경할 수 있는 명령어
route: 커널의 라우팅 테이블 출력.수정
ss( socket statisitcs) / 리눅스 네트워크 상태 확인 netstat 이랑 비슷: IP주소 확인
mii-tool:네트워크 인터페이스 연결 상태와 속도를 확인할 수 있고 강제로 포트 속도를 변경할 수 있음
15.리눅스 활용 분야
고계산용 클러스터(HPC:High Performance CLuster):계산능력 좋음
부하분산 클러스터(LVS:Linux Virtual Server):분산 역할로 시스템 오류 대비 가능
고가용성 클러스터(HAC:High Availability Cluster): 부하분산 클러스터와 혼합하여 노드가 수행을 한다.
16.명령어
single quote:작은 따옴표(')
작은 따옴표 사용시 특수 문자를 일반 문자로 인식함.즉 명령어가 아닌 그냥 글자 그대로의 의미
큰따옴표는 상관이 없다(변수와 명령어가 치환 가능)
back quote:백 따옴표(`)
백쿼트 사용시 일반문자도 명령어로 인식하게 만드는 기호이다. 즉 명령어가 실행됨.