Engineering/Engineering

[Engineering Basic] 리눅스 Linux

iamzieun 2023. 4. 30. 17:53

1. Linux

1.1 Linux

1.2 CLI, GUI

  • CLI (Command Line Inteface)
    • 터미널에서 텍스트를 통해 컴퓨터를 조작하는 명령어 기반의 인터페이스
    • ex. window의 CMD window, Mac의 Terminal
  • GUI (Graphical User Interface)
    • 화면에서 마우스를 통해 컴퓨터를 조작하는 그래픽 기반의 유저 인터페이스

1.3 대표적인 Linux 배포판

  • Debian: 온라인 커뮤니티에서 제작해 배포한 리눅스
  • Ubuntu: 영국의 캐노니컬에서 만든 배포판으로 설치가 쉽고 편함
  • Redhat: 레드햇에서 배포한 리눅스
  • CentOS: Redhat에서 브랜드와 로고를 제거하고 배포한 리눅스

2. Shell Command

2.1 쉘의 종류

  • 쉘 shell
    • 운영체제 상에서 다양한 운영체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램
    • 사용자와 운영 체제의 내부(커널) 사이의 인터페이스를 감싸는 층
    • 쉘의 종류
      • sh: 최초의 쉘
      • bash: linux 표준 쉘
      • zsh: mac 카탈리나 os 기본 쉘
  • 터미널 terminal / 콘솔 console
    • 쉘을 실행하기 위한 껍데기
    • 쉘을 실행하기 위해 문자 입력을 받아 컴퓨터에 저장하고, 프로그램의 출력을 화면에 작성

⇒ 사용자는 터미널에 명령어를 입력 → 쉘은 사용자가 입력한 명령어를 해석하여 커널에 전달 → 커널은 전달받은 명령을 실행

2.2 기본 쉘 커맨드

https://iamzieun.tistory.com/19

2.3 Redirection & Pipe

  • redirection
    • stream
      • unix에서 동작하는 프로그램(여기서는 리눅스)은 커맨드 실행 시 3개의 stream이 생성됨
        • stdin: 0으로 표현. 입력(비밀번호, 커맨드 등)
        • stdout: 1로 표현. 출력(터미널에 나오는 값)
        • stderr: 2로 표현. 디버깅 정보나 에러 출력
    • redirection
      • 프로그램의 출력(stdout)을 다른 파일이나 stream으로 전달
        • > : 덮어쓰기(overwrite). 파일이 없으면 생성하고 저장
        • >> : 맨 아래에 추가하기(append)
  • pipe: 프로그램의 출력(stdout)을 다른 프로그램의 입력으로 전달
    • ex. ls | grep “vi”: ls를 통해 출력된 현재 폴더의 파일명 중 vi를 포함하는 파일들을 출력

2.4 서버에서 자주 사용하는 쉘 커맨드

  • ps (process status): 현재 실행되고 있는 프로세스 출력하기
    • -e: 모든 프로세스
    • -f: full format으로 자세하게 보여줌
  • curl (client url): 프로토콜들을 이용해 URL 로 데이터를 전송하여 서버에 데이터를 보내거나 가져올때 사용하기 위한 명령줄 도구 및 라이브러리
  • df (disk free): 현재 사용 중인 디스크 용량 확인
    • -h: 사람이 읽기 쉬운 형태로 출력
  • scp (secure copy): SSH를 이용해 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어
  • nohup: 터미널 종료 후에도 백그라운드에서 계속 작업이 실행되도록 하는 명령어
  • chmod: 파일의 권한을 변경

2.5 쉘 스크립트

  • 쉘 스크립트: 쉘 커맨드의 조합
  • 쉘 스크립트 사용법
    • name.sh 파일을 생성하여 그 안에 쉘 커맨드를 추가
    • → bash name.sh로 터미널에서 해당 파일의 쉘 커맨드 실행 가능
  •