본문으로 바로가기

[Linux] 리눅스 보고서

category Layer 7/assignment 2019. 5. 26. 14:26

[1] 리눅스와 윈도우의 차이점?

(1) CUI와 GUI의 차이

우리가 모두 알고있듯이 윈도우 OS는 GUI ( 그래픽 기반 인터페이스 )를 사용하고, 리눅스 OS는 CUI ( 커맨드 기반 인터페이스를 사용한다. ) 처음 시작할때의 진입장벽은 CUI쪽이 조금 더 높을 수 있다고 해도, 리눅스의 여러가지 명령어의 사용이 숙달된 상태라면, CUI가 더 편할정도로 사용할 수 있다.

예를 하나 들어보자. 윈도우에서 파일을 다운받으려면 크롬을 키고, 검색을 하고, 사이트에 들어가서, 파일을 찾고 다운로드 하여야 한다. 하지만 리눅스 같은 경우에는 명령어 한 줄 (sudo apt-get install 원하는파일) 로 다운받을수 있다.


(2) 다중사용자와 단일사용자와의 차이

리눅스는 OS를 설계할 당시부터 한 운영체제에 여러 사람들이 접속할 수 있게 했고, 권리자권한은 root계정에 주는 방식으로 계정을 할당하여 서버를 관리할 수 있게 설계하였다. 하지만 윈도우는 개발 당시부터 한명의 사용자만 OS를 이용할 수 있게 만들었고, 리눅스와의 분명한 차이가 나타난다.


(3) 정보 처리 방법의 차이

리눅스는 정보를 텍스트형식으로 저장한다. 예시를 하나 들자면, 비밀번호는 /etc/password 디렉토리에 텍스트 형식으로 저장한다던가.. 하지만 윈도우에서는 레지스트리라는 특별한 데이터 처리방법을 두고 데이터를 관리한다. 정보를 변경하려면 레지스트리에 있는 값을 변경하여야 한다는 불편함이 있다.


(4) 상업성의 차이

리눅스는 오픈소스로 만들어졌기때문에 데비안, 센토스같이 자신만의 리눅스 배포만을 만들 수 있다. 그리고 상업성이 없는만큼 편리하게 사용할 수 있다. 하지만 윈도우는 상업성으로 만들어졌고, 소스를 공개하지 않았다. 따라서 사용하려면 비용을 지불하고 정품을 다운로드 받아야 한다는 불편함이 있다.


내가 너무 리눅스의 장점만 두드러지게 설명하면서 윈도우와 비교한 것 같은데, 사실 윈도우에도 리눅스와는 다른 여러 장점들이 있다. 

일단 창을 동시에 올려놓고 멀티태스킹을 할 수 있다는것, 그래픽 기반이라 모든사람들이 편리하게 사용할 수 있다는점 등등!



[2] 리눅스 명령어

(1) 리눅스의 명령어는?

윈도우에서 마우스로 폴더와 파일을 클릭하고, 우리가 실행시키듯이 우리는 리눅스에서 디렉토리 ( 폴더 ) 를 열고 파일을 실행시키는 같은 원리를 가진다. 물론 우린 이걸 명령어로 한다.

명령어의 옵션을 알고싶으면 ( 명령어 --help ) 명령을 사용하면 된다. 지금부터 몇가지 간단한 명령어를 정리해보겠다.



<1> ls    -옵션

현재 디렉토리에 파일들을 보여주는 명령어이다. -l 옵션을 사용하면 리스트형식으로 파일을 보여준다. 

여기서 파일이 디렉토리인지 파일인지 구분 할 수 있고, 파일이 ID별로 어떤 권한을 가지고 있는지 한눈에 알 수 있다.

 -a 옵션을 사용하면 숨겨진 파일도 보여준다. 숨겨진 파일도 보면서 리스트형식으로 보고싶으면 -la이나 -al 같이 사용하면 된다.


<2cd     /디렉토리

원하는 디렉토리로 이동하는 명령어이다.


<3pwd

현재 내가 있는 위치를 알려주는 명령어이다.


<4mkdir     디렉토리명

디렉토리를 만드는 명령어이다.


<5rmdir     디렉토리명

디렉토리를 지우는 명령어이다.


<6vi     파일명

vi라는 파일 편집기를 연다. vi abc.c 라는 명령어를 입력하고 파일을 작성한 후 저장시키면, abc.c 라는 파일이 남게 된다.


<7rm     파일명

파일을 삭제 ( remove ) 시킨다.


<8ifconfig 

ip에 관련된 정보들을 출력해준다. ip주소, 서브넷마스크 등을 볼 수 있다.


<9sudo     관리자권한으로 실행시키고싶은 명령어

관리자 권한으로 명령어를 실행한다. root ID의 비밀번호를 알고있어야 한다.


<10apt-get

리눅스에서 쓰이는 패키지 관리 명령어 도구이다. 특히 개발 관련 패키지를 설치할때 많이 쓰이며, 윈도우와는 다르게 한줄의 명령어로 간편하게 원하는 파일을 설치할 수 있다는것이 큰 특징이다. 관리자 권한이 있어야 한다.

upgrade 옵션을 사용하면 패키지들을 모두 최신버전으로 업그레이드 하고,

install 패키지명    을 사용하면 원하는 패키지를 다운로드 해준다.


<11> i

id 명령어는 현재 유저에 권한에 대한 정보를 출력해준다.

리눅스는 사용자의 권한을 숫자로 표시한다. 

현재 사용자의 uid, gid, groups에 어떤 ID를 가지고 있는지를 알려준다. 0은 root권한이다.


<12> chmod

UID,GID,GROUPS에 대한 권한을 설정해주는 명령어이다.

권한은 각각 읽기, 쓰기, 실행 권한으로 나누어 지며, 숫자로는 4, 2, 1 이다.

즉, Juntae라는 파일의 uid,gid,groups 읽기,쓰기,실행 권한을 모두 주고싶으면 chomd 777 juntae 라고 입력하면 된다.

7의 의미는 읽기 + 쓰기 + 실행이다. ( 4 + 2 + 1 )


<12> cat     파일 내용 출력 / 파일 생성 / 파일 병합

(1) 파일의 내용을 출력하는 명령어이다.

(2) cat > hello.c 와 같이 파일을 생성할 수 있으며, ctrl  + D 를 누르면 저장한다. cat >> hello.c를 사용하면 기존 파일에 연속해서 내용을 첨가할 수 있다.

(3) cat  hello.c  world.c > helloworld.c 를 입력하면, hello.c에 있던 내용과 world.c에 있던 내용이 helloworld.c에 모두 들어가게 된다. 이런식으로 파일을 병합할 수 있다.


<13> grep 원하는 내용

grep 명령어는 혼자서 실행되어지지 않고, 다른 명령어와 파이프 ( | )와 함께 쓰여진다. 예를들어서...

cat hello.txt | grep helloworld 처럼 사용된다.

위의 명령어는 hello.txt의 내용을 출력시키고, 그 내용중에서 helloworld 라는 문자열 패턴이 있는 부분만 가져온다는 얘기이다.

즉, grep은 원하는 내용을 뽑아오는 명령어라고 생각하면 편하다.


<14> cp 파일1 파일2

파일1을 파일2로 복사하는 명령어이다. -r 옵션을 사용하면 파일이 아니라 디렉토리도 복사할 수 있다.



이건 그냥 흔히 쓰는 명령어이고, 이 명령어보다 훠어어어어어얼씬 많은 명령어가 있다.

하지만 난 그냥 이거만 알고있는데도 리눅스를 그럭저럭 편하게 사용하고 있다.




[3] 리눅스의 파일형식

(1) 리눅스 파일의 구조

리눅스의 파일은 크게 일반파일, 디렉토리파일, 링크파일, 장치파일로 구분되어진다.

일반파일은 ls -l 명령을 사용했을때 첫번째가 -로 나오고, 디렉토리는 d로, 링크파일은 l로, 장치파일은 캐릭터 장치파일이냐, 블록 장치파일이냐에 따라서 c나 b로 나온다. 일반파일은 일반파일이므로, 디렉토리 파일에 대해서부터 설명하면..


(2) 디렉터리 파일

디렉터리 파일은 나무와 같이 구성되어 있다.

나무의 가지가 줄기에서 시작해서 가지를 펴고, 또 그 가지를 따라가서 또 가지를 펴듯, 디렉토리도 최상위 디렉토리인 '/' 부터 시작해서 계층구조로 디렉터리나 파일이 들어가 있다. 

최상위 디렉토리에는 리눅스의 설정이나 명령어들이 속해있는 여러 폴더가 있기도 하다. ( /bin, /dev, /etc, /home  등등.. )


(2) 링크 파일

링크 파일은 윈도우의 바로가기와 같이 구성되어 있다.

링크의 종류에는 크게 심볼릭링크와 하드링크가 있다.

일단 사용법부터 말하면

ln 옵션 원본파일 대상파일     으로 사용한다.

심볼릭 링크는 -s 옵션을 사용! 하드링크는 아무런 옵션도 사용하지 않는다.


-심볼릭 링크는 원본 파일을 가르키도록 링크 시켜둔 것이다. 원본 파일을 " 가리키고 " 만 있는것이다. 원본 파일이 삭제된다면, 링크파일은  윈도우의 바로가기처럼 제 할일을 하지못한다. 


-하드 링크는 원본 파일을 복사한것과 같은 효과를 가진다. 사실상 사본이 하나 더 생겼다고 생각하면 된다. 디스크상에서의 근본적으로 원본 파일과 같은 파일이다.


(3) 장치 파일 

장치 파일은 파일 처럼 보이지만 사실 장치 드라이버로 구현 되어있는 시스템이라고 한다. 주로 /dev 디렉토리에 모여있다. 그리고 위에서 말한것처럼 장치파일은 크게 문자 장치파일블록 장치파일로 구분되어진다. 

블록 장치파일은 USB/CD-ROM/플로피디스크 같이 용량이 큰 저장장치에 Block단위 ( 일정한 용량만큼, 보통 512나 1024만큼 )로 접근하여 데이터를 처리하는 하일이다.

문자 장치파일은 버퍼를 지원하지 않는다. 그리고 블록 장치처럼 고정 단위로 접근하지 않는다. 문자 장치파일은 데이터를 쓰고 읽는게 즉시 일어나며, 한 바이트만 입력해도 입력이 되고 출력이 바로바로 된다. 그래서 문자( char ) 라는 이름이 붙었다. 문자 하나하나는 1바이트 이기 때문이다! 문자 장치파일을 사용하는 대표적인 예시로 마우스나 키보드를 통한 입출력이 있겠다.

'Layer 7 > assignment' 카테고리의 다른 글

[GIT] git 보고서  (0) 2019.06.10
[C] 동적할당 보고서  (0) 2019.04.12
[C] 달팽이 배열  (0) 2019.04.09
[C] 포인터 보고서  (0) 2019.04.03
[C] 함수 보고서  (0) 2019.04.03