2019. 5. 26. 16:04ㆍlayer7
리눅스란 무엇일까?
리누스 토르발즈가 유닉스(Unix) 운영체제를 모델로 개발한 컴퓨터 운영체제(ex. window os)이다.
리눅스는 자유 소프트웨어와 오픈 소스 개발의 가장 유명한 예시로 들 수 있다.
리눅스는 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영체제(NOS)이다.
어려운 단어 정리
자유 소프트웨어
: 복사와 사용, 연구, 수정, 배포 등의 제한이 없는 소프트웨어이다.
오픈 소스
: 소프트웨어 혹은 하드웨어의 제작자의 권리를 지키면서 원시 코드를
누구나 열람할 수 있도록 한 소프트웨어
다중 작업(멀티 태스킹)
: 다수의 작업이 중앙 처리 장치(CPU)를 나누어 사용하는 것을 말한다.
+ 엄밀히 말하자면 개인용 컴퓨터가 특정 순간에 수행할 수 있는 작업의 개수는 하나뿐이다.
따라서 멀티 태스킹은 스케줄링이라는 방식을 사용하여 컴퓨터 사용자에게 병렬
연산이 이루어지는 것과 같은 환경을 제공한다.
다중 사용자
: 여러 명의 컴퓨터 사용자에 의한 동시 접근을 허용하는 운영 체제나
응용 소프트웨어를 정의하는 용어이다.
다중 사용자와 단일 사용자의 차이
다중 사용자 방식의 리눅스는 OS를 설계할 당시부터 한 운영체제에 여러 사람들이 접속할 수 있게 했고,
관리자 권한은 root 계정에 주는 방식으로 계정을 할당 하여 서버를
관리할 수 있게 설계하였다.
단일 사용자 방식의 윈도우 개발 당시부터는 개발 당시부터 한 명의 사용자만 OS를 이용할 수 있게 만들었고,
이는 리눅스와의 분명한 차이이다.
네트워크 운영체제
: (network operating system,NOS)는 라우터, 스위치, 방화벽과 같은 네트워크 장치를 위한 특화된
운영체제이다.
리눅스의 특징&정리
1. 리눅스는 유닉스와 완벽하게 호환이 가능하다.
2. 리눅스는 공개 운영체제이다. 오픈소스이므로 누구든지 자유롭게 수정이 가능하다.
3. 리눅스는 다른 OS보다 안정적이며 보안쪽면에서도 다른 OS보다 비교적 우수한 성능
을 가지고 있다.
4. 리눅스는 다양한 네트워킹 기술을 제공하고 있으며 서버용 OS로 적합하다.
5. 배포판이 아닌 리눅스 그 자체는 무료이다.
다양한 리눅스의 종류
리눅스는 오픈소스로 이루어져 있어 누구든지 수정이 가능하여 배포할 수 있다.
그래서 무수히 많은 버전의 리눅스가 있는데... 인터넷에 리눅스 가계도라고
쳐보면 엄청난 걸 볼 수 있을 것이다. 하지만 그렇게 많은 리눅스를 다 알고 있을 필요는 없다.
리눅스에는 두가지 계열의 리눅스가 있는데 바로 "레드햇 계열"과 "데비안 계열"이다.
대표적인 버전으로 레드햇의 센토스 os와 데비안의 우분투 OS가 있다.
레드햇 계열
레드햇 계열은 레드햇이라는 회사에서 배포한 리눅스를 말한다.
2003년까지는 오픈소스 라이센스로 진행하다가 이후 상용화 되었다.
레드햇 리눅스는 배포한 중에서 가장 인기가 높으며, 커뮤니티가 아닌 회사에서
관리하는 레드햇 계열의 리눅스는 다른 리눅스 배포한에 비해 패치가 빠르며 내장 되어 있는
유틸리티의 양도 많고 관리툴의 성능도 우수하다.
여러모로 장점이 많다.
대표적인 OS로는 센토스와 페도라가 있는데 오늘날에는 페도라 보단 센토스를 더
많이 사용하는 추세라고 한다.
데비안 계열
데비안은 온라인 커뮤니티에서 제작하여 레드햇보다 더 먼저 배포되어 시장을 선점였다.
데비안에서 파생되어진 OS를 데비안 계열이라고 부른다.
데비안은 자발적인 커뮤니티에서 만드는 배포한이라 회사에서 서비스를 했던
레드햇의 비해 사후지원과 배포가 늦고 내장 유틸들의 성능이 레드햇 계열에 비해 부족한 감이 이어
오랫동안 레드햇에 밀렸었다. 하지만 현재는 무료 개인 사용자 서버용으로 인기가 매우 높으며
최근에는 지속적인 업데이트를 거친 결과 레드햇 계열의 비해 결코 성능이 뒤쳐지지 않는다.
그리고 넓은 유저층을 가지고 있는 데비안 계열은 그 사용법이 온라인 웹 사이트나 커뮤니티에
자세히 기술되어 있다는 점이 진입장벽을 낮추어 초보 리눅스 유저들이 접근하기 쉬운 OS라고 할 수 있을 것 같다.
우분투
영국의 케노티컬이라는 회사에서 만든 배포판으로 쉽고 편한 설치와 이용법 덕분에 진입장벽이 낮아 초보자들이 쉽게 접근할 수 있으며 데스크탑용 리눅스 배포한 가운데서 가장 많이 사용되고 있는 배포판이다.
개인용 데스크톱 운영체제로 많이들 사용햔댜. 서버용으로도 기능이 부족하거나 성능이 딸리지는 않지만 센토스 OS에 조금 많이 밀린다.
리눅스의 파일 형식
리눅스의 파일 구조
- 리눅스의 파일은 크게 일반파일, 디렉토리파일, 링크 파일, 장치 파일로 구분되어 있다.
ls -l 명령어를 사용하였을 때
일반 파일은 첫번쨰가 -로 나오고
디렉토리는 d로 나오고,
링크 파일은 l로, 장치파일은 캐릭터 장치 파일이나, 블록 장치 파일이냐에 따라서
캐릭터 장치 파일이라면 c로, 블록 장치 파일이라면 b로 나온다.
I-node block
아이노드(inode)는 정규 파일, 디렉터리 등 파일 시스템에 관한 정보를 가지고 있습니다.
-I-node: 파일을 기술하는 디스크 상의 데이터 구조, 파일에 대한 정보를 기록하기 위해 사용
i-node는 각각의 파티션 마다 0부터 시작하는 정수의 형태를 가지고 있으므로 서로 다른 파티션이라도
같은 i-node를 가질 수 있다.
파일들은 각자 1개의 아이노드를 가지고 있으며, 아이노드는 소유자 그룹, 접근 모드(읽기, 쓰기, 실행 권한), 파일 형태, 아이노드 숫자(inode number, i-number, 아이넘버) 등 해당 파일에 관한 정보를 가지고 있습니다
+i-node에 저장된 정보: 파일의 소유자(사용자, 그룹), 파일의 액세스 모드,
파일의 타임스탬프(파일의 마지막 수정, 액세스), 파일의 종류
일반 파일
: 파일의 종류에 대해 확인 가능
디렉터리 파일
: 특수 파일로 서로 연관되어 있는 파일들을 하나의 그룹으로 만들어 저장하도록 구분 되어 있는
공간을 의미, 디렉토리에는 최소 2개의 i-node 번호를 포함함
-> 현재 디렉토리를 의미하는 .과 상위 디렉토리를 의미하는 ..의 i-node 번호가 존재한다.
tree 형식으로 상위 디렉토리인 '/'부터 시작해서 계층 구조로 디렉토리나 파일이 들어있다.
최상위 디렉토리에는 리눅스의 성정이나 명령어들이 속해있는 여러 폴더가 있디로 하다.
(/bin, /dev, /home, /etc 등)
링크 파일
윈도우의 바로가기 아이콘과 비슷하다.
링크에 종류에는 크게 심볼릭 링크와 하드 링크가 있다.
- 심볼릭 링크
다른 파일로의 경로만을 가리키는 파일이므로
심볼릭 링크 파일이 삭제가 되어도 실제 원본 파일에는 영향을 주지 않는다.
이 말은 반대로 원본 파일이 삭제 된다면, 링크 파일은 윈도우의 바로 가기가
원본 파일이 삭제 되면 사용하지 못하는 것고 똑같이 제 할 일을 하지 못한다.
+ 서로 다른 파일 시스템 내에서도 링크가 가능하다.
- 하드 링크:
: 원본 파일을 복사한 다음 사본을 만든다. 동일한 i-node를 갖는 파일을
생성하는 것이다.
좀 더 쉽게 말하자면 원본 파일을 복사한 것과 같은 효과를 가진다.
사실상 사본이 하나 더 생겼다고 생각하면 된다.
장치 파일:
하드웨어나 주변 기기들을 나타내는 파일이다.
사실 파일처럼 보이지만 실제 장치 드라이버로 구현 되어있는 시스템이라고 한다.
주로 /dev 디렉토리에 모여있다.
장치 파일은 크게 캐릭터(문자) 장치 파일과 블록 장치파일로 구분되어 있다.
-블록 장치 파일
USB/CD-ROM/플로피디스크 같이 용량이 큰 저장장치에
Block 단위(일정한 용량만큼, 보통 512나 1024만큼)로 접근하여 데이터를 처리하는 파일이다.
-캐릭터(문자) 장치 파일
문자 장치 파일은 버퍼를 지원하지 않는다. 그리고 블록 장치처럼 고정 단위로
접근하지 않는다. 문자 장치파일은 데이터를 읽고 쓰는게 즉시 일어나며 한 바이트만 입력해도 입력이 되고 출력이 바로바로 된다.
그래서 문자(char)라는 이름이 붙었다.
문자는 한 글자는 1byte이기 때문이다.
문자 장치파일을 사용하는 대표적인 예시로 마우스나 키보드를 통한 입출력이 있다.
ex) 하드 디스크. 프린터기. 마우스 등
리눅스 기본 명령어
ls -a/ -l/-al 파일 또는 폴더 보기
pwd 자신이 어떤 디렉토리에 속해있는지 보기
디렉토리 이동
cd [ .. ] 디렉토리 나가기
cd [ 디렉토리명] 디텍토리명으로 이동
cd [ / ] 최상위 디렉토리
cd [ /디렉토리/디렉토리 ] 절대 경로로 이동
디렉토리 제어<mkdir, rmdir>
mkdir(make directory) [디렉토리명] 디렉토리 생성
rmdir(remove directory) [디렉토리명] 디렉토리 삭제
파일 제어<cp, rm, mv>
cp(copy) [복사원본파일명] [복사사본파일명] 파일 복사
rm(remove) [파일명] 파일 삭제
mv(move) [원본] [이동경로] 파일 이동
+mv 명령어는 보통 파일 이름을 변경할 때 많이 사용한다.
네트워크
w 리눅스 서버에 어떤 사람들이 접속해 있는지 확인
finger 리눅스 사용자들의 계정 정보를 확인
ifconfig 현재 접속한 서버의 ip 확인
write [아이디][터미널번호] 서버에 접속된 사용자들과 대화
ex) write guest/dev/pst/3
wall [대화내용] 모든 통신 사람들한테 쪽지 보내기
정보 수집하기
whoami 자신의 정보를 수집(자신이 '누구인지' 파악)
id whoami 명령어보다 많은 정보가 나온다.
cat /etc/passwd 어떤 사람들이 계정을 얻어 사용하는지 파악
uname -a 커널 버전 정보 확인
cat /etc/*release 서버에 설치된 OS 버전 정보
rpm -qa 패키지에 관한 정보
cat /proc/cpuinfo cpu 정보
압축하기<tar, gzip>
tar [-cvf] 파일 합치기
tar [-xvf] 파일 합쳤던 거 해제하기
gzip [파일 이름] 파일 압축하기(하나의 파일만 압축한다. 그래서 tar 명렁어와 자주 같이 쓰인다.)
gzip [-d](delete) [파일 이름] 압축 해제하기
텍스트 파일(txt) 만들기<cat>
cat 파일이름 문서 읽기(텍스트, 코드 등)
cat > [파일이름] [파일이름]으로 새 파일 쓰기
cat >> [파일이름] [파일이름]으로 내용 추가하여 쓰기
c언어 사용하기<cat, gcc>
cat > 소스파일이름.c 소스파일 만들기
gcc -o [프로그램이름][소프파일이름] 컴파일 하기
ex) gcc -o helloworld.exe helloworld.c
+gcc는 GNu/리눅스의 컴파일러이다.
파일 찾기<find>
find / -perm 내용 /의 경로부터 권한과 일치하는 파일을 찾는다.
find / -name 내용 /의 경로부터 이름과 일치하는 파일을 찾는다.
find / -user 내용 / 의 경로부터 그룹과 일치하는 파일을 찾는다.
finf / -group 내용 /의 경로부터 그룹과 일치하는 파일을 찾는다 .
위 옵션드른 서로 조합하여 동시에 사용할 수 있다.
명령어 설정<alias, unalias>
alias는 자주 사용하는 명령어를 간단한 명령어로 설정하는 명령어 이다. 해제하고자 하는 경우에는
unalias를 사용한다.
alias new='command': command를 실행하는 새 명령어 new를 만든다.
ex) alias ls='ls-l': ls를 실행하면 -l 옵션을 갖는 ls를 실행하게 된다.
alias: 현재 alias 목록을 축력한다.
unalias newL new라는 alias를 해제 합니다.
도움말 명령어<man>
man: 명령어 도움말
ex) man ls
-> ls 명령어에 대한 도움말을 출력해준다.
관리자 권한 명령어<sudo>
리눅스에서 무언가를 다운 받거나 할 때 root 권한이 필요한 경우가 있다.
그럴 경우 일시적으로 권한을 관리자 권한으로 상승 시켜
명령어를 사용할 수 있게 해주는 sudo 명령어를 사용할 수 있다.
sudo 관리자 권한으로 실행 시키고 싶은 명령어
root ID의 비밀번호를 알고 있어야 한다.
패키지 관리 명령어<apt-get>
리눅스에서 쓰이느느 패키지 관리 명령어 도구이다
윈도우와는 다르게 한 줄의 명령어로 간편하게 원하는 파일을 설치할 수 있다는 점에서
편의성을 제공한다. 관리자 권한이 있어야 사용 가능한 명령어이다.
upgrade 옵션을 사용하면 패키지들을 모두 최신 버전으로 업그레이드 한다.
-> apt-get-upgrade
install 패키지명 을 사용하면 원하는 패키지를 다운로드 해준다.
-> apt-get install 패키지명
권한 설정 명령어<chmod>
UID, GID, Groups에 대한 권한을 성정해주는 명령어이다.
권한은 각각 읽기, 쓰기, 실행 권한으로 나누어 지며,
숫자로는 4, 2, 1이다.
4+2+1=7
즉, geunuk이라는 파일에 읽기, 쓰기, 실행 권한을 모두 주고 싶으면
chmod 777 geunuk 이라고 입력하면 된다.
유저의 권한 출력<id>
id 명령어는 현재 유저에 권한에 대한 정보를 출력해준다.
리눅스는 사용자의 권한을 숫자로 표시한다.
현재 사용자의 uid, gid, groups에 어떤 ID를 가지고 있는지를 알려준다.
0은 root 권한이다.
그 외 여러가지 명령어
clear: 화면을 지우는 명령어이다.
grep: 파일에 포함된 특정 단어를 검색
옵션:
-i: 대소문자 구문 안함
-n: 라인 번호 출력
-v: 검색어가 없는 Line을 보여준다.
-n: 라인의 개수 출력
지금까지 긴 글 읽어주셔서 감사합니다.
틀린 부분이 있다면 댓글로 남겨주세요!.
'layer7' 카테고리의 다른 글
팀프로젝트 보고앉아 (0) | 2019.07.15 |
---|---|
Layer 7 12과제 -Git 보고서- (0) | 2019.06.12 |
Layer7 과제 08 -개인 프로젝트 보고서- (0) | 2019.05.25 |
Layer 7 07 과제 -메모리 구조&동적 할당 보고서- (0) | 2019.04.13 |
Layer 7 07 과제 - 달팽이 배열 (0) | 2019.04.10 |