2023.10.30(Mon) - Day 1.

  • 강의 주제: Linux I (기초)

🚦 Common Knowledge

  1. 컴퓨터는 무엇으로 이루어져 있나?
    Hardware -> CPU, 메모리(RAM), Hard Disk, I/O(입출력장치)

  2. 명령어란?
    ipconfig -> 명령어 => 일종의 프로그램

    window 기준으로 cmd에서 명령어를 입력하면
    /system32에 저장되어 있는 ipconfig.exe를 실행하는 것과 같다.

  3. 웹 브라우저란?
    file을 download 받아서 보여주는 client program
    client program -> 서비스를 이용하는 program

  4. 서버란?
    service를 제공하는 일종의 program

  5. Linux -> OS
    Window -> OS

  6. MSA
    트래픽이 몰릴 때 서버가 터질 수 있다.
    한 순간에 몰릴 수 있는 트래픽을 잘 관리하려면 여러 대의 서버를 사용해야 한다.
    Docker로 container 환경을 조성하고
    Kubernetes로 운영 환경을 조성한다.

    이 때, MSA Architecture는 유연하게 서버 운영을 하기 위해 사용되는 개념이다.

  7. 기타



🖥️ 실습 환경

노트북 -> 회사 (vpn으로 망 접속) -> 개발망 - vm, container, kubernetes, openstack
노트북 -> 회사 (vpn으로 망 접속) -> 운영망

개발망 - 테스트 등의 개발 진행
운영망 - 개발망과 거의 비슷한 환경이지만 에러가 있으면 절대 안된다.

우리는 Window 노트북에 VMWare Workstation Pro 17을 설치한 후
CentOS 8 OS을 설치해서 사용할 것이다.
(강사님의 .ova 파일 import하는 방식 선택)



Linux 기초

  • File System
    파일이 어디에 저장되어 있는지.

  • Format = File system을 새로 만들겠다.
    파일이 하드디스크 어디에 저장되어 있는지 등에 대해 시스템을 새로 만드는 것이다.

  • Window는 c,d,e 등의 드라이브가 여러 개 있을 수 있지만
    Linux는 최상위 디렉토리가 단 하나 존재한다.
    (그 안에 전부 다 존재하고 d 드라이브 같은 디렉토리 無)

리눅스의 기본 구성 요소

  • kernel → 운영체제
  • shell → kernel이 알아들을 수 있는 명령어로 communication
  • window
    • window 탐색기 (cmd, 탐색기가 window의 shell).
      탐색기가 os에 전달
  • linux
    • bash (shell)로 모든 명령어를 내림.
  • promt
    • 각종 정보를 표시
    • 어떤 폴더의 위치에 내가 있는지 등의 정보를 나타냄.

Linux에서는 사용자가 커널을 직접 조작할 수 없게 되어 있기 때문에
둘 사이에서 명령어를 받아들이고 커널의 실행 결과를 출력하는 sw가 필요하다.
-> 이 역할을 수행하는 sw ==> shell

  • shell
    • kernel의 interface에 해당
    • shell은 linux kernel을 감싸는 역할

디렉토리 관련 명령어

확장자

: 파일의 종류

명령어

- 폴더
    - 폴더 이동
        - cd /etc/test 경로: 상대 경로 or 절대 경로
    - 폴더 안 파일 목록 보기
        - ls -al
    - 폴더 생성
        - mkdir 경로
    - 폴더 삭제
        - rm -rf 경로
    - 폴더 이름 변경
        - mv 원본경로 바뀔경로
            - mv jbc abc (jbc → abc로 이름 변경)
            - mv /etc/sysconfig/network-scripts/jbc /etc/sysconfig/network-scripts/abc
            - 위 두 개의 명령어 동일.
    - 폴더 옮기기
        - mv 원본경로 옮길경로
    - 폴더 복사
        - cp -r 원본경로 바뀔경로
            - cp -r def def2
- 파일
    - 빈 파일 생성
        - touch file (file명: file)
    - 파일 내용 확인
        - cat file (file명 or 경로)
                - cat, head, tail, more ...
    - 대부분의 명령어는 폴더와 같음.

- 문서 편집
    - 커서 이동
        - hjkl, gg, G, nG, $, 0, b, w
    - 찾아서 수정
        - :%s/원본/수정/g

문서 편집기

vi 편집기

  • vi

    • 명령 모드 (command mode)

      • 모드 변경, 복사, 이동 등의 작업 진행
    • 커서 이동

      • 기본: 방향키
        • G: 가장 마지막 줄로 이동
        • gg: 첫 번재 줄로 이동
        • [n]G: n번 째 줄로 이동
          ex.) 100G - 100번 째 줄로 이동
        • $: 커서가 위치한 줄의 맨 앞으로 이동
        • 0: 커서가 위치한 줄의 맨 앞으로 이동
        • w: 커서가 한 단어씩 오른쪽으로 이동
        • b: 커서가 한 단어씩 왼쪽으로 이동

    • 삭제

      • x: 한 문자 삭제, 또는 Edit 모드에서 backspacedelete키로 삭제
      • dd: 커서가 위치한 한 줄을 삭제
      • d[커서 이동]: 커서를 이동하는 만큼 삭제
      • 커서 맨 앞 + d + G: 전체 삭제

    • 수정

      • r : 커서가 위치한 부분의 문자 하나를 입력하는 문자로 대체
      • u : 작업 취소 (Ctrl + z처럼)

    • 복사 및 붙여 넣기

      • yy : 커서가 위치한 한 줄을 복사
      • y[커서 이동]: 커서 이동하는 만큼 복사
      • p: 커서 밑이나 커서 다음에 붙여넣기

    • i 입력 -> Edit mode -> 원하는 대로 편집 가능

    • last line mode

    • 파일을 저장하거나, 종료하거나 저장하지 않고 그냥 종료, 검색, 바꾸기

      • command mode에서
      • :w (저장)
      • :q (종료)
      • :wq (저장 및 종료)
      • :w! (강제 저장)
      • :q! (강제 종료)
      • :wq! (저장 및 강제 종료)
    • :set nu (line 번호 표시)



실습

  • cp -r /etc/passwd/ltw/a/passwd
  • /root/ltw/a/passwd에 passwd 파일 이동 후 여기서 편집 실습
    사실 여기서 편집하면 절대 안됨 (/root/에서는 건드리지 않는게 좋음)
    그렇지만 VMWare이니까 일단 편하게 사용해본다.

    • 10번 줄로 이동 (10G)
    • 같은 줄에서 제일 오른쪽으로 이동 $
    • 같은 줄에서 제일 왼쪽으로 이동 0
    • 가장 마지막 이동 G
    • 한 줄 복사 yy
    • 붙여 넣기 p
    • 5번 줄로 이동 5g
    • 6번 줄부터 가장 마지막 줄까지 다 삭제 6g → d + G
    • 저장 및 종료 :wq

파일 및 디렉토리 검색



find
 find / -name passwd

find / -name *.java


하드 링크와 심볼릭 링크

  • 링크: 일종의 바로 가기와 비슷한 개념

  • 심볼릭 링크
    • 우리가 흔히 알고 있는 개념이 심볼릭 링크
    • HDD를 가리키는 하드 링크가 파일 시스템에 있고
      파일 시스템 내에서 해당 하드 링크를 가리키는 링크가 심볼릭 링크
  • 하드 링크
    • 파일 시스템과 관련
      • 파일 시스템
        • HDD를 찾아가는 것.
      • HDD
    • HDD의 어디에 저장되어 있는지 찾아가는 것.
  • 원본 링크 -> 하드 링크
    심볼릭 링크 -> 바로가기 링크
    (File system에서)
  • 물론 HDD에 직접 링크를 거는 하드 링크를 추가할 수도 있음.
    (심볼릭 링크에서 추가하는 것 말고)
    => 하드 링크가 사라져도 유지될 수 있다.

ln -s /root/ltw/passwd(원본) /a 

최상위 경로에 a라는 바로가기를 추가하겠다는 의미.



권한의 이해와 설정 방법


  • '-' : 보통 file

  • d : directory

  • l : symbolic link

  • d | rwx | r-x | r--

    • rwx가 있으면 소유자는 읽고 쓸 수 있음.
    • root 관리 그룹 내 admin으로 로그인하면 r-x 권한 받음.
    • root 관리 그룹 내 없는 계정으로 로그인하면 r-- 권한 받음.

  • lim 계정을 root 관리 그룹에 추가


    • '-' : 일반 file

    • 소유자 : r w x (7)

    • 소유 그룹: r - x (5)

    • 기타 사용자 : r -x (5)

      읽기쓰기실행
      소유자허가허가허가
      소유 그룹허가금지허가
      기타 사용자허가금지허가
      • 이 파일은 소유자만 수정할 수 있다.
        그 외의 사용자는 파일 내용을 수정할 수 없다.
        모든 사용자가 실행할 수 있다.

 ** 권한 **
000

001

002

...

777


-------------------------------------------------------------------------------

                        파일                                 디렉토리
            읽기       쓰기            실행          읽기     쓰기         실행
            cat      vi 내용변경     파일명 입력      ls    mkdir, touch   cd
                         + 저장

0   ---     x           x             x              x       x            x
1   --x     x           x             x              x       x            x
2   -w-     x           x             x              x       x            x
3   -wx     x           x             x              x       o            o
4   r--     o           x             x             /\       x            x
5   r-x     o           x             o              o       x            o
6   rw-     o           o             x              o       x            x
7   rwx     o           o             o              o       o            o

ls = /usr/bin/ls
명령어 실행은 결국 저장되어 있는 파일을 실행하는 것과 같다.



Linux network 설정

vi /etc/sysconfig/network-scripts/ifcfg-ens160

#ONBOOT=no -> #ONBOOT=yes 로 변경

systemctl restart NetworkManager

test

ping 8.8.8.8 (google과 통신 test)

putty 설치
-> 이제 권한 없는 유저 만들어서 권한 설정 및 테스트 진행

ip addr

putty로 192.168.xx.xxx/port 22로 ssh 연결 후 2개 화면 띄워놓는다.

cf.)

vi /etc/ssh/sshd_config
chmod 777 ltw/file


프로세스 제어

  • 프로그램
    • HDD에 저장되어 있는 실행 파일
  • 프로세스
    • 메모리에서 실행되는 프로그램
  • 프로세서
    • CPU에서 메모리에 있는 프로세스를 하나씩 읽어와서 실행

ps -ef    // 현재 실행중인 프로그램(프로세스)

  • PID
    • OS가 실행 중인 프로세스에 PID를 부여해 관리
    • 종료할 땐 PID 번호를 입력해야 프로세스 종료 가능
      kill -9 13319
      13319번의 pid를 가진 bash 프로세스 종료
      -9 -> 무조건 종료 (가장 강력한 종료 명령)

      ps -ef | grep bash
      bash 관련 프로세스만 출력



리눅스 명령어 (추가)

exit  // 로그아웃

logout  // logout 명령어로는 shell 종료 불가 -> exit 사용해야 함.

sudo su - 
shutdown -h now    // 전원 종료

/sbin/shutdown -h now    // shutdown error 발생 시

/date     // 현재 날짜와 시간


ctrl + b     // 커서 이동 단축키


참고 자료

  • 강사님 자료
  • 모두의 리눅스
    • 1, 2, 4, 5, 6, 7, 9, 10장
profile
Web Developer

0개의 댓글