Linux-1 (22/11/21)

nazzzo·2022년 11월 21일
0

Linux 입문




1. 리눅스란?

컴퓨터를 실행시키기 위한 OS(오퍼레이팅 시스템)의 일종이다
(Windows, MacOs, Linux, Unix...)

리눅스는 유닉스를 토대로 설계된 OS로 리누즈 토발즈에 의해 만들어졌다.
현존하는 가장 큰 오픈소스 소프트웨어로서 가장 많은 개발자가 참여중이며
오픈소스 개발에 있어 제일 대표적인 표본이기도 하다.

리눅스의 토대인 유닉스는 멀티 유저와 멀티 태스킹을 지원하도록 설계되었는데
이를 모태로 한 리눅스 역시 유닉스의 특징을 그대로 따르고 있다.

  • 멀티 유저 : 여러 사용자가 동시에 하나의 시스템에 접근 가능
    (Window는 기본적으로 싱글 유저를 대상으로 발전해온 OS)

  • 멀티 태스킹 : 여러개의 작업을 동시에 실행하고,
    교대로 컴퓨터의 자원을 사용하는 기능

  • OS
    컴퓨터의 하드웨어를 관리하는 것을 목적으로 하는 소프트웨어.
    하드웨어와 소프트웨어 사이의 인터페이스(매개체) 역할을 한다.

    예를 들어 키보드, 마우스 등의 하드웨어(입력장치)에서
    입력신호를 소프트웨어(OS)에 전달하면,
    소프트웨어는 이를 사용자가 눈으로 볼 수 있게끔 데이터를 가공해서
    다시 하드웨어(모니터)로 보내 출력하는 과정을 거친다.

  • 오픈 소스
    누구든지 무료로 소스 코드를 실행, 연구, 수정 및 재배포할 수 있으며
    동일한 라이센스가 유지되는 한 수정한 코드의 복사본을 판매할 수도 있는
    소프트웨어들의 총칭



1-2. 리눅스의 구조




리눅스의 구조는 응용 프로그램의 구동 방식을 토대로 설명할 수 있다

응용프로그램에서 사용자가 명령을 내리면 Shell은 이 명령을 해석하고
(Shell 은 명령 해석기라고 이해하자)

Shell은 해석된 사용자의 입력 명령어를 Kernel(커널)에 전달한다

그리고 커널이 하드웨어에 입력신호를 전달하면 프로그램이 실행된다
(커널은 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 한다)


(이 이 전달구조의 중추가 되는 것은 kernel)


응용 프로그램 (Application)

사용자가 컴퓨터를 사용하여 어떠한 일을 하려고 할 때
사용되는 모든 프로그램을 말한다.
(작업관리자를 켰을 때 보이는 사용자가 사용중인
모든 프로세스들이 바로 응용 프로그램)

시스템 프로그램을 이용 및 응용해서 특정 기능만 하도록
새로 만들어낸 프로그램이기에 '응용' 프로그램이라 부르는 것



1-3. 우분투(Ubuntu)?

우분투는 리눅스를 기반으로 한 여러 OS 중 하나로
현재까지 가장 널리 쓰이고 있다



2. CLI 명령어 정리


명령어를 확인하기에 앞서서 CLI와 GUI의 개념을 짚고 가는 것이 우선...

CLI & GUI

  • CLI (Command Line Interface)
    글자의 입출력을 통해 사용자와 컴퓨터가 소통하는 방식
    (CLI 환경은 마우스가 없음을 전제로 한다)

  • GUI (Graphical User Interface)
    눈에 보이는 그래픽 요소를 통해 소통하는 방식


대부분의 사용자는 이미 윈도우나 맥OS를 사용하고 있기 때문에
리눅스를 다룰 때는 GUI보단 CLI 환경에서 작업을 하게 된다

어째서 CLI를 사용하냐고?

  • 가볍고 빠르다
    메모리를 훨씬 덜 사용하며, 명령어 단 몇 줄만으로도
    다중적인 기능을 수행하여 빠르게 결과를 도출할 수 있다.
  • 원격 접속이 용이하다
    CLI를 이용하면 네트워크 접속을 통해서도 PC를 이용하듯
    안정적으로 작업할 수 있다.



CLI 명령어 리스트

cd : 디렉토리 이동

cd ~/Desktop : Desktop 디렉토리로 이동
cd ~ : 사용자의 홈 디렉토리로 이동
cd / : 루트(최상위) 디렉토리로 이동 (절대경로)
cd ./ : 현재 위치에서 시작. (상대경로)
cd .. : 상위 디렉토리로 이동

pwd : 현재 디렉토리 위치를 출력

ls : 현재 디렉토리 안의 파일목록을 조회
ls .. : 상위 디렉토리 안의 내용물 출력

  • ls -al : ls -l + ls -a
    • ls -l : 파일들의 상세정보를 출력
    • ls -a : 숨김 파일을 표시 (.파일명 : 숨겨진 파일)

l : 링크
dr : 디렉토리

mkdir : 디렉토리 생성

만약 사용자의 문서 디렉토리에 workspace라는 디렉토리를 만든다면

cd /
cd home
cd 유저명
cd Documents
mkdir workspace

아니면 아래처럼 축약할 수도 있다

 mkdir cd ~/Documents/workspace

vi : 에디터 열기(파일 열기)
vi 파일명 : 만약 해당하는 파일명이 없으면
새로운 파일 생성이 되며 에디터가 열린다.

  • 모드
    • 명령 모드 : 에디터 진입시의 기본 모드
    • 입력 모드 : 소문자 i 입력 (파일 내용을 수정할 수 있게 된다)
      명령모드로 되돌아가려면 esc 입력
  • 종료옵션 :
    • :q : 종료
    • :q! : 강제 종료 (!는 강제의 의미)
    • :w : 저장(write) (w!는 강제저장)
    • :wq! : 저장 후 강제종료

mv : 파일이동 명령어
mv [현재 위치/파일명][ ][이동할 위치/파일명]

mv ./blockchain8/hello.txt ./sample/hello.txt

(hello.txt가 blockchain8 디렉토리에서 sample 디렉토리 안으로 이동)


+) 파일명을 바꿀 때도 mv 명령어를 사용한다!

mv ./hello.txt ./hello2.txt

(파일명이 hello2.txt로 변경된다)

cp : 파일복사 명령어
cp [현재 위치/파일명][ ][이동할 위치/파일명]

cat 파일 내용이 출력된다
cat + 파일명. (에디터를 열지 않고 내용을 확인할 때 사용)

pwd : 현재 디렉토리를 출력

who, whoami : 현재 로그인된 사용자명 출력

env : 환경변수를 출력
(지금 사용중인 Linux 컴퓨터에서 사용하고 있는 변수를 출력)


echo $HOME
$+변수명, $는 변수를 불러올 때 사용한다.
(해당 변수가 담고있던 값을 출력함)

grep : 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력한다
grep [찾을 단어][ ][파일 위치]

grep host ./development.js
	"host" : "127.0.0.1"

| (Pipe line) :
env -> PATH
(env 결과를 가지고 PATH라는 내용을 가진 것들만 보고 싶을 때)

env | grep HOME
HOME=/Users/kimjh

env | grep PWD
PWD=/Users/kimjh/Documents/blockchain8
OLDPWD=/Users/kimjh/Documents

ps (Process Status) : 리눅스에서 사용중인
프로세스의 상태를 보여주는 명령어

  • ps -ef
  • -e: 현재 수행하고 있는 프로세스에 관한 정보
  • -f: 프로세스 ID와 모 프로세스 ID를 포함한 전체 리스트 출력

    프로세스는 실행할 때마다 고유번호(PID)가 생긴다
    만약 노드로 실행중인 프로세스만 확인하려면?
    ps -ef | grep node
    이런 식으로 찾고자 하는 PID를 확인할 수 있다

kill : 실행중인 프로세스를 끄는 명령어
kill -9 [PID]



3. 디렉토리의 구조

graph
A("/") --> /bin
A --> /boot
A --> /dev
A --> /etc
A --> /home
A --> /lib
A --> /usr
A --> /media
A --> /mnt
A --> /var

3-1 루트 디렉토리

/ : 최상위 디렉토리. /도 디렉토리를 의미한다.
(cd / : 루트(최상위) 디렉토리로 이동)

ls로 루트 디렉토리를 확인하면 그 안에서
/bin 을 포함한 각종 디렉토리를 발견할 수 있다

3-2 /bin

기본적인 명령어가 담겨져있는 디렉토리
(리눅스 시스템 사용에 있어서 가장 기본적인 명령어들이 저정된 공간)

ls, cd...

ex)cat, chmod,chown,cp,echo,kill,ls,mkdir,mv,ps,pwd,rm,su,vi...

3-3 /boot

리눅스의 부트로더(boot leader)가 존재하는 디렉토리

3-4 /dev

각종 디바이스 파일들이 저장되는 공간

블록 디바이스캐릭터 디바이스

  • 블록 디바이스
    HDD와 같은 주변 장치를 말한다
    데이터를 블록단위로 읽고 쓰여지며 랜덤하게 엑세스한다
  • 캐릭터 디바이스
    입출력이 한 바이트 단위로 이루어지며 데이터가 순차적으로 읽고 쓰여진다

3-5 /etc (중요)

시스템의 거의 모든 설정파일이 존재하는 디렉토리

etc/sysconfig : 시스템 제어판용 설정파일

ext/password : 사용자 관리 설정파일

/etc/ssh : SSH 서비스 각종 설정파일이 담겨있는 디렉토리

/etc/hosts : 도메인의 IP를 찾을 때 컴퓨터가 가장 먼저 조사하는 파일

wihdow는 C:\windows\system32\drivers\etc\hosts

cd /etc > vi hosts 에서 ip를 확인할 수 있다
(:q!로 빠져나오기)

/etc/skel : 계정 사용자 생성시 초기화 파일이 저장된 디렉토리(adduser)에서 사용함

3-6 /home

사용자의 홈 디렉토리, adduser 명령어로 새로운 사용자를 생성하면
대부분 사용자의 id와 동일한 이름의 디렉토리가 자동으로 생성된다

cd /home/사용자명 = cd ~

홈디렉토리 경로 찾아가기는 cd ~로 축약 가능

cd /home > ls -al

3-7 /lib

커널 모듈과 라이브러리 파일이 담겨있음

3-8 /media

DVD, USB, CD 등을 마운트 시

3-9 /mnt

/media와 유사한 용도 (맥OS에는 없다)
(WSL2 사용시 window 파일이 담겨져있는 공간)

3-10 /var

어플리케이션 실행중에 데이터를 일시적으로 저장하거나
로그파일들을 저장하는 디렉토리
(= console.log...)

/var/log : 로그를 저장하고 싶을 때는 이 디렉토리 안에 담는다
(다른 디렉토리에 넣더라도 동작은 한다)

0개의 댓글

관련 채용 정보