가. 실무의 이해 | |||||||||
A. 운영체제와 리눅스 | |||||||||
i) 운영체제 | |||||||||
1. 역할(3), 2. 역사(1940~), 3.특징(13), 4. 종류(데스크톱(3), 모바일(6), 스마트TV(4), IVI(5), 웹) | |||||||||
ii) 리눅스 철학과 역사 | |||||||||
1. 철학(3), 2. 라이선스(6), 3. 역사(1991~), 4. 활용(클러스터(3), 임베디드 시스템, 클라우드 컴퓨팅(3), 빅데이터, 사물인터넷) |
|||||||||
B. 시스템 이해 | |||||||||
i)리눅스와 하드웨어 | |||||||||
1. 리눅스와 하드웨어(8), 2.RAID(2,디스크설계), 3.LVM(PV,PE,VG,LV) | |||||||||
ii) 리눅스 구조 | |||||||||
1. 부트매니저(LILO,GRUB), 2.디렉터리 구조(14), 3. 부팅과 셧다운(6), 4. 파일시스템(XFS), 5. X윈도(GDM,KDM), 6. 셸 Shell(bash), 7. 프로세스(standalone,inetd) |
ii) 리눅스 구조
1. 부트매니저
부트매니저 | 1. 부팅을 도와줌 2. =부트로더 3. 하드디스크 맨앞 MBR(마스터부트기록)에설치 =부트섹터 =0번섹터, 512Byte =부트매니저프로그램, 파티션 정보 기록. |
|
GRUB | 1. GNU에서 만든 부트로더 2. /boot/grub/brub.conf |
[a] : grub.conf에서 커널과 관련된 매개변수추가. ex) [a]+[1] 싱글모드 진입 [e] : 편집모드, 현재만 일시적용 e-줄편집, d-줄삭제, o-아래줄추가O-윗줄추가d-최종편집으로부팅시작 [c] : 상호대화식 Bash Shell과 유사 tab-자동완성, esc- 취소 |
#boot=/dev/sda default=0 timeout=10 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title CentOS (2.6.27.7) root (hd0,0) kernel /boot/vmlinuz-2.6.27.7 ro root=LABEL=/1 initrd /boot/initrd-2.6.27.7.img title CentOS (2.6.18-92.el5PAE) root (hd0,0) kernel /boot/vmlinuz-2.6.18-92.el5PAE ro root=LABEL=/1 initrd /boot/initrd-2.6.18-92.el5PAE.img |
#boot=/dev/sda 부팅 하드디스크지정(1개면주석처리됨) default=0 부팅기본순서 0이 첫번째 timeout=10 10초 대기후 default값으로 부팅 splashimage=(hd0,0)/boot/grub/splash.xpm.gz GRUB화면 배경이미지 (fd0) /dev/fd0 (hd0) 일반 IDE, S-ATA, SCSI 등 첫번째 하드디스크 /dev/sda or /dev/hda (hd0,0) /dev/sda1 or /dev/hda1 (hd0,2) /dev/sda3 or /dev/hda3 |
2. 디렉터리 구조
/boot | 부팅시 필요한파일 GRUB, |
|
/dev | 실제 물리적장치 파일화 하드디스크, CD-ROM |
|
/etc | 시스템환경설정, 부팅과 관련 스크립트파일 | |
/home | 개인사용자 파일 디렉터리 | |
/lib | 라이브러리 | 커널 모듈도 있음 |
/lost+found | fsck명령어 파일시스템복구시 작업 디랙터리 RHEL 7부터 사용안함 | |
/mnt | CD-ROM, 플로피디스크, 하드디스크, 등 마운트할때 포인터가 되는 디렉터리 /media, /net 추가제공. |
|
/misc | 자동 마운드 프로그램 autofs에 의해사용. | |
/proc | 가상파일시스템, 프로세스 상태정보, 하드웨어, 기타 시스템 정보 | |
/root | 루트사용자 홈디렉터리 | |
/sbin | System Binary | 시스템 명령어, root가 보통 사용. 시스템종료, 네트워크인터페이스 설정, 점검 복구 |
/tmp | 임시저장 | |
/user | 시스템 운영에 필요한 명령, 응용프로그램 위치 | |
/var | 로그파일, 스풀링 등 가변적 데이터 보관. 메일서버 |
3. 부팅과 셧다운
부팅 | 루트파일시스템(/) 읽기전용 마운트후 검사-> 쓰기형태로 다시 마운트 -> init 프로세스 발생. | |
init | /etc/initab : 부팅 실행레벨 /etc/init/rcS.conf : 시스템초기화 /etc/init/rc.conf : rc스크립트 지정 실행 /tc/rc.d/rc.local : 사용자 부팅시 필요한 구동 설정. |
레벨 | /etc/initab 에 정의 , 마지막 8번째는 S, s로 유지보수점검시 안전모드 | |
0 | 시스템종료 | |
1 | 단일사용자, root 사용자로 관리자 모드 | root패스워드잊어버렸을때 /boot/grub/grub.conf password삭제 |
2 | 네트워크 미사용 다중사용자 | |
3 | 네트워크 사용 다중사용자 | |
4 | 사용자 정의 | |
5 | X윈도 사용 다중 사용자 모드 | |
6 | 시스템 재부팅 |
로그인 | /etc/issue : 로컬 사용자 로그인메시지 /etc/issue.net 텔넷 네트워크 접속시메시지 /etc/motd : 로그인 접속사용자 메시지 |
|
shutdown | shutdown -r now 즉시 재부팅 shutdown -h now 즉시 종료 shutdown -h +10 10분뒤 종료. shutdown -h 10 "종료함" 10분뒤 종료&메시지 shutdown -c 취소 shutdown -h 23:59 11시 59분종료 |
-r : reboot -h : halt -c : 취소 -k : 실제 셧다운 하지 않고 메시지만접속사용자전송 |
reboot | reboot 즉시 재부팅 reboot -w 재부팅안하고 /var/log/wtmp기록만저장 |
|
halt | 로컬접속사용자 사용가능. halt 시스템 종료. |
|
poweroff | 시스템종료, 전원끔. | |
init | init 0 즉시 종료. init 6 즉시재부팅 init 1 단일사용자모드로 |
사용권장안함 |
4. 파일시스템
- ext3부터 저널링기능 추가됨. 현재XFS 많이 사용.
ext4구조 | ||
부트섹터 | 블록그룹1 | 블록그룹2 |
슈퍼블록/그룹디스크립터테이블/블록비트맵/아이노드 비트맵/아이노드테이블/데이터블록 | ||
슈퍼블록 : 파일시스템 모든 정보 갖고있음. 백업을 많이함. 아이노드 테이블 : i-node(파일고유번호) -> (i-node 테이블:용량클때추가)-> 데이터블록위치 가르킴 데이터 블록 : 실제저장 i-node : 15개 만 표시 -> x128개 (i-node 테이블:용량클때추가) -> x128개 (i-node 테이블:용량클때추가) |
항목 | ext2 | ext3 | ext4(RHEL6) | ext4(RHEL7) | XFS(RHEL6) | XFS(RHEL7) |
시작년도 | 1993 | 2001 | 2006 | |||
최대파일크기 | 2GB | 2TB | 16TB | 16TB | 100TB [8EB] |
500TB [8EB] |
최대 파일시스템 크기 | 4TB | 16TB | 16TB [1EB] |
50TB [1EB] |
300TB [16EB] |
500TB [16EB] |
하위디렉터리 생성 최대수 | 32000 | 32000 | 65000 | 제한없음 |
mkfs | 파일시스템만들기 |
5. X윈도
XFree86 (1992) X.org (2004) |
|
키보드 마우스 스크린 <-> X Server <-> Xclient (브라우저, xterm) <-----네트워크----> Xclient(xterm) |
|
디스플레이 매니저 | XDM GNOME 의 GDM , KDM |
명령어 | startx -- {인자값} 인자값으로 윈도우를 실행시킴 xhost 현재 접근가능 클라이언트 목록 xhost + 모든 클라이언트접속 허용 xhost - 모든 클라이언트 접속 차단. xhost +{ip} ip 접속 허가. xhost -{ip} ip 접속 제거. xauth 접근허가 |
환경변수 | $ echo $DISPLAY #export DISPLAY ="{ip}:0.0" X클라이언트 프로그램을 ip로전송 #export DISPLAY ="{ip}:0.1" X클라이언트 프로그램을 ip 첫번째 실행 X서버 두번째 모니터로 전송. |
DE | 인터페이스 스타일, 데스크톰환경 | 윈도메니저 | Movie Player | 이미지뷰어 | 음악 |
KDE | KWin, KWM | kdegraphics | |||
GNOME | Mutter, Metacity | totem | eog | Rhythmbox | |
사진편집(GIMP), 노래방파일(KMid), 이미지(ImageMagick), 문서(evince, LibreOffice) |
6. 셸 : 커널과 사용자간 다리역할
HW | 커널 | 셸 | OS |
<-----------------------과거 셸의 범위 ----------------> | |||
<--------------------------------------------------------------------------현재 셸의 범위 --------------------------> |
유닉스 최초셸 켄 톰프슨 멀틱스 셀 모형화 | ||
1977 sh |
스티븐 본 본셀(sh) - 유닉스버전 7 기본셸 |
|
C셸계열 |
1978 csh | 빌조이 C셸(csh) - 명령 히스토리, 별명, 작업제어, 편집기능안됨 |
1981 tcsh | 켄그리어(테넥스+C셸) - 명령 완성, 명령 편집 |
|
1983 ksh | 스티븐 콘 ksh(콘셸) - 본셸 + 벨연구소사용자요청 C셸 - 작업제어, 히스토리, Vi&Emacs스타일 편집, 명령행 완성 |
|
1989 bash | 브라이언폭스 GNU프로젝트 위해 개발 배시셸 = Bourn Agin Shell , 본셸기반. GNU 운영체제, 리눅스, 맥OS X, 리눅스 표준셸 sh와 호환, ksh, csh의 유용한 기능 참고 - 명령 히스토리, 별명, 완성, 치환, 편집 지원 포직스와 호환. |
|
1997 Dash | (데비안 Almquist sheall) 포직스 호환되는 /bin/sh를 가능한작게 구현한셸, 빠른작업 = NetBSD의 ash에서 파생 데비안 우분트 기본셸 - Bash와 비교 매우작고 처리속도빠름, 히스토리 지원않함 |
셸
echo $SHELL chsh -l cat /etc/shells |
셸의 확인 |
chsh -> 비번 -> 셸정보 ex /bin/csh | 셸의 변경 |
/etc/passwd 의 7번째 필드 | 사용자 로그인셸 |
변수명=값 -> echo $변수명 | 변수지정 |
mkdir $HOME/data | 자신 홈경로 안에 data 디렉터리추가 |
PATH=$PATH:$HOME/data | PATH에 자신홈경로안 data 추가 |
env | tail | 셸의 환경을 정의하는 중요한 역할 변수 |
/etc/profile /etc/profile.d /etc/bashrc ~/.bash_profile ~/.bashrc ~/.bash_logout |
모든사용자 환경변수, 시작프로그램 일반사용자 alias, 설정스크립트 모든사용자 적용 alias 개인사용자 환경변수, 시작프로그램 개인사용자 적용 alias 개인사용자 로그아웃시 설정 |
~abc ~. '' " " `pwd` # $ & * ? () \ [abc] [a-c] [!0-9] ; < > / ! |
abc 사용자 홈디렉토리 물결(tilde) 현재디렉토리 작은따옴표 : 모든 문자 특수문자 일반문자로 큰따옴표: $, \ 제외 모든문자 일반문자 역따옴포 : 명령문실행 결과출력 주석 변수 후작업 모든문자 한문자 대체 subshell 셸단위로 묶어줌 탈출(escape)문자 or조건으로 묶음 a부터c까지 알파벳소문자 숫자가아닌문자 shell 명령분리자 입력재지정 출력재지정 디렉터리 분리 history |
환경변수
HOME | 사용자홈 경로 |
PATH | 실행파일 경로 |
LANG | 셸 기본실행언어 |
TERM | 로그인터미널종류 |
PWD | 현재경로 |
SHELL | 사용자로그인셸 |
USER | 사용자이름 |
DISPLAY | X윈도 프로그램실행시출력창 |
PS1 | 프롬프트(Prompt) 변수 PS1="[\u\@\t]" \t=> 프롬프트변수 \d : 요일 월 일 \h : 호스트이름 \s : 사용중셸 \t : hh24 \T : hh12 \@: hh12 + AM/PM 추가. \u: 현재사용자이름 \w : pwd \W : 마지막 경로 \! : 현재명령의 히스토리넘버 \\ : \ 표시 |
PS2 | 프롬프트(Prompt) 변수2 |
HOSTNAME | 시스템호스트명 |
도착메일저장경로 | |
TMOUT | 로그아웃 대기초 |
UID | 사용자 UID |
배시셸
설명 | bash 배시셸 |
|
1. 자동완성 | [TAB] | |
2. 히스토리 | history history 3 |
명령어목록 최근 3개 |
HISTFILE HISTSIZE HISTFILESIZE HISTCONTROL HISTTIMEFORMAT |
히스토리파일경로 히스토리명령어줄수 히스토리파일크기 중복명령어기록유무 -ignoreboth :중복저장안함 history 출력시간형식 "%Y.%m.%d %T" |
|
!! !2 !-2 !a !?al |
가장최근명령실행 목록번호2번실행 뒤에서 2번째명령실행 최근에서 a시작명령실행 최근 al 문자포함명령실행 |
|
.bash_history | 로그아웃시도 저장 | |
3. 별명 | .bashrc | 재부팅,재로그인시사용위해설정 |
alias alias ls='ls -alF' \ls unalias ls |
별명목록출력 ls 실행하면 ls -alF실행 기본명령어 실행 ls명령해제 |
|
4. 명령행편집 | [Ctrl] +[b] /[Ctrl] +[f] [ESC] +[b] /[ ESC ] +[f] [Ctrl] +[a] /[Ctrl ] +[e] [ESC]+[<-] /[Ctrl] +[d] [Ctrl] +[k] [Ctrl] +[u] [Ctrl] +[y] |
커서 왼쪽/오른쪽한칸 커서 왼쪽/오른쪽한단어 커서 제일 왼쪽/오른쪽 커서 왼쪽/오른쪽한단어 커서 왼쪾 행전체 행 전체 삭제 삭제취소 |
5. 명령형치환 | ls -l 'which passwd' ls -l $(which passwd) |
|
6. 그룹명령 | ; () || %% |
입력한 순차실행 () 우선실행 or 앞 명령이 성공이면출력 아니면 뒤출력 앞 수행해야 뒤수행 |
7. 표준입출력 | 0 1 or 생략 2 abc 2>/dev/null |
표준입력 표준출력 표준에러 abc 에러면 버림 |
8. 리다이렉션 | > >> < << |
표준출력에서 다른출력 파일에 출력 표준입력에서 다른입력 기호뒤문자까지입력받음 |
9. 파이프 | a | b tee ls -l |tee list.txt|more |
a의 결과를 B의입력 파이프연결 동시처리 목록list.txt저장, 화면출력 |
10. 작업제어 | kill -l 1 SIGHUP 2 SIGINT 3 SIGQUIT 9 SIGKILL 15 SIGTERM 18 SIGCONT 19 SIGTSTP |
kill 목록보기 SIGHUP 끊다(Hangup) 데몬설정바꿀때 재시작시사용 SIGINT 키보드에서 차단(interrupt) =[ctrl]+[c] SIGQUIT 키보드에서 중지(QUIT) = [ctrl]+[\] SIGKILL 종료(KILL) SIGTERM 정상종료(terminate) SIGCONT 중지를실행(continue) SIGSTOP 터미널입력 정지 (STOP) 시그널 SIGTSTP 실행정지후 다시실행계속위해 대기 = [ctrl]+[z] |
0 시스템종료 1 단일사용자, root 사용자로 관리자 모드 2 네트워크 미사용 다중사용자 3 네트워크 사용 다중사용자 4 사용자 정의 5 X윈도 사용 다중 사용자 모드 6 시스템 재부팅 |
||
ntsysv --level 5 chkconfig --list chkconfig --list abc chkconfig --level 35 abc on chkconfig --level 5 --del abc chkconfig abc off chkconfig telnet on |
실행레벨 5의 서비스 데몬을 설정 각 실행레벨에서의 서비스 설정상태 abc 서비스의 상태보기 실행레벨 3,5에 대해 abc서비스 on 레벨 5에서 abc삭제 2,3,4,5 abc off |
|
11. 산술연산 | echo $[3**3] expr 3 \* 3 echo $[expr 3+2 \* 3**3] |
3의 3승 붙일것. 3 X 3 띄울것. 5 - 연산자 반드시 띄울것 |
12 프롬프트기능 | PS1 | 명령대기줄 이름변경 = 환경변수 PS1변경. |
13 확장된 내부명령어 | set env export unset |
셸 변수 출력 셸환경, 관련변수, 함수등도 환경변수 출력명령어 특정변수범위 전송 프로세스에서도 특정변수사용. 선언된변수제거 |
셸스크립트 | #!/bin/bash | 셸스크립트 시작 |
$0 $1 $# $$ $* $@ $? $- |
셸스크립트 명 첫번째 아규먼트 아규먼트 갯수 셸스크립트 pid 모든변수를 각각 연결해서 보여줌 문자인식위해 따옴표필요 모든변수를 공백으로 연결해서 보여줌 실행뒤 참이면 0, 거짓이면 1반환 shell호출시 사용한 옵션들 |
|
var=value #var변수에value저장 var=`ls abc 2>&1 > /dev/null` #명령실행결과 var=$(ls abc 2>&1 > /dev/null`) var=$(var:=value) # var 에 null 아니면 그대로 사용 없으면 value ${var:+value} # var가 null 이면 1회사용 $(#abc) #문자열 길이반환 $(abc:2:3) # 2번째글자부터 3자 |
||
\f \n \r \t \\ |
페이지이동 (form feed 종이 이동) 새 (new) 로운줄 앞으로이동(carriage return) \ |
|
[string] [a -eq b] [! a] [-b file] [-c file] [-d file] [-f file] |
string 비어있지않으면 참. 두 표현식같으면 참 a가참이면 거짓 파일이 블록디바이스면 참 파일이 문자디바이스면 참 파일이 디렉터리면참 파일이 존재하고 정규파일이면 참 |
|
if [] then 실행문장 elif [] then 실행문장2 else 실행문장 3 fi |
||
case "$abc" in "a") 실행문장 ;; "b" | "c") 실행문장2 ;; *) 실행문장3 ;; esac |
||
options=("옵션 1" "옵션 2" "옵션 3" "종료") # select 문 시작 - 사용자와 상호작용 select choice in "${options[@]}"; do case $choice in "옵션 1") echo "옵션 1이 선택되었습니다." ;; "옵션 2") echo "옵션 2가 선택되었습니다." ;; "옵션 3") echo "옵션 3이 선택되었습니다." ;; "종료") echo "프로그램을 종료합니다." break ;; *) # 잘못된 입력에 대한 처리 echo "유효하지 않은 선택입니다." ;; esac done |
||
for i in {1..5}; do echo "숫자: $i" done |
||
while ["$var" -le 3] #참일동안 do echo $var done |
||
until ["$var" -le 3] #거짓일동안 do echo $var done |
||
함수 함수이름(){명령줄} function 함수이름(){명령줄} |
||
패턴 # variable="prefix_text_prefix" echo ${variable#_} echo ${variable##_} 패턴 % variable="prefix_text_prefix" echo ${variable#_} echo ${variable##_} |
# 순방향패턴 text_prefix #순방향 최장일치패턴 prefix # 역방향패턴 prefix_text # 역방향 최장일치패턴 prefix |
7. 프로세스
프로세스 | 1. 실행중이 프로그램 2. PCB(실행제어블록)가진 프로그램 3. 프로그램 카운터 가진 프로그램 4. 능동적개체로 순차적 수행. |
|
pstree ps exec ps -l jobs |
프로세스트리 pid확인 새로운 프로세스 할당. 작업프로세스보기 + 실행후 - 실행됨 |
|
포어그라운드 프로세스 백그라운드 프로세스 |
종료까지 기다림 (jobs -> fg %2 2번작업번호 포어그라운드로) 뒤에서 실행 (끝에 &추가로붙여 실행 or bg 명령어 ) |
|
데몬의 실행 standalone inetd /etc/rc.d/init.d rc0.d~rc6.d 디렉터리 |
부팅시 실행, 항상동작,종료시 종료 요청시 실행, 후에 xinetd 시스템제공 서비스 시작 중지=service |
/etc/rc.d/init.d/httpd stop 아파치 종료. /etc/rc.d/httpd start 아파치 시작 |
ntsysv chkconfig |
'기타 > 리눅스마스터 1급' 카테고리의 다른 글
[1028] 가.실무의이해 > C.네트워크 이해 > ii) 네트워크설정 (0) | 2024.03.09 |
---|---|
[1028] 가.실무의이해 > C.네트워크 이해 > i) 네트워크기초 (0) | 2024.03.08 |
[1028] 가.실무의이해 > B.시스템 이해 > i) 리눅스와 하드웨어 (0) | 2024.02.17 |
[1028] 가.실무의이해 > A.운영체제와 리눅스 > ii) 리눅스 철학과역사 (0) | 2024.02.14 |
[1028] 가.실무의이해 > A.운영체제와 리눅스 > i)운영체제 (0) | 2024.02.13 |