리눅스 총정리

권도훈·2023년 11월 16일
0

Linux

  • 리눅스 소개
    • 리눅스는 1991년에 리누스 토르발스 (Linus Torvalds)에 의해 개발된 오픈소스 운영체제
    • 리눅스는 유닉스를 모방하여 만들어진 운영체제
      • 맥 OS, 리눅스 등 많은 운영체제가 유닉스에 영향을 받아 만들어짐
        • 이로 인해 맥북과 리눅스는 유사한 운영체제 환경
        • 이에 반해 윈도우는 비교적 독자적인 방향
      • 안드로이드 운영체제는 리눅스 커널을 기반으로 개발(2000년대 중반)
      • 이후 많은 운영체제가 무료로 배포된 리눅스에 영향을 받아 만들어졌고, 리눅스 운영체제를 기본으로 다양한 프로그램을 추가한 수많은 배포판이 나오게됨
  • 리눅스 배포판
    • 리눅스에는 수백개의 배포판이 존재
      • 리눅스커널이라는 공통된 운영체제 커널을 사용하되 갖가지 다른 응용프로그램을 다르게 조합해 만든, 리눅스 운영체제
    • 크게는 redhat계열, debian계열이 존재
      • 데비안계열은 ubuntu, debian등이 대표적
      • 레드헷계열은 redhat, centos등이 대표적인 배포판
      • 도커에서 사용하는 가벼운 alphine리눅스도 존재
      • 일반 웹서비스에서는 우분투가 1위
      • 상업용 시장에서는 레드헷이 1위
  • 리눅스 주요 개념
    • 커널
      • 커널(kernel)은 컴퓨터 시스템의 핵심적인 부분으로, 하드웨어와 소프트웨어 간의 상호작용을 관리
      • 메모리 관리, 입출력관리, 프로세스 관리 등
        • 프로세스는 컴퓨터에서 실행 중인 프로그램을 의미
    • 파일 시스템 구조
      • 파일 시스템은 계층적 구조를 가지며, 가장 상위에는 루트 디렉토리 (/)
      • 주요 디렉토리로는 /bin, /etc, /home, /var, /usr 등
        • /home은 사용자의 홈 디렉토리, /etc는 시스템 설정 파일을 저장
    • 사용자와 그룹
      • 리눅스에서 사용자는 여러 그룹에 속하게 하여 그룹으로 관리
      • 권한 관리를 통해 특정 사용자나 그룹이 파일이나 디렉토리에 접근할 수 있는 권한을 지정
    • 쉘 (Shell)
      • 사용자와 운영체제 간의 인터페이스 프로그램. 쉘은 사용자의 명령을 해석하여 운영체제 커널에 전달
      • 대표적인 쉘로는 bash, zsh 등
  • 리눅스 실습 준비
    • 가상환경에서 리눅스 설치
    • vmware 가상환경 지원 프로그램 설치
      • 모두 default set으로 설치 진행
    • 우분투 이미지 다운로드
    • 우분투 OS 설치
  • 주요 쉘 명령어
    • 디렉터리 관련
      • pwd
        • 현재 위치 경로를 출력
      • mkdir
        • 새로운 디렉토리를 생성
      • ls명령어
        • ls –l
          • 자세하게 출력
        • ls –al
          • 숨김파일도 출력
      • cd
        • 디렉토리 이동 명령어
        • 절대경로 이동 cd /root/abc/cbd
        • 상대경로 이동 cd ..
        • cd만 치면 홈 경로로 이동
        • cd / 를 치면 root경로로 이동
      • .은 현재경로를 의미, ..은 상위경로를 의미
      • 자동완성과 히스토리
        • tap키를 눌러 자동완성
        • history명령어로 이전 명령어 조회
        • 도스키 사용(상하 화살표키)
      • clear
        • 입력중인 명령창 깨끗하게 정리
    • 파일 관련
      • rm
        • 파일이나 디렉토리 삭제
        • rm, rm –f, rm -rf
      • cp
        • 파일이나 디렉토리를 복사
        • cp –r 하면 디렉토리까지 모두 복사
      • mv
        • 파일이나 디렉토리를 이동
        • 잘라내기와 같은 기능
      • touch
        • 용량 0인 파일을 생성
        • 이미 존재할 경우에는 수정 시간을 변경
      • cat
        • 텍스트로 작성된 파일을 화면에 출력
        • more 명령어는 페이지 단위로 출력
          • space를 통해 아래 페이지로 넘어감
      • head, tail
        • 텍스트로 작성된 파일의 앞 10행, 마지막 10행 출력
        • n 숫자 옵션을 주어 원하는 행숫자별로 출력 가능
      • 리다이렉션( >, >>, |, < 등)의 활용
        • echo는 터미널 화면에 출력하는 명령어
        • echo와 > : 표준 출력의 결과를 덮어쓰기로 파일로 저장하는 기능
        • echo와 >> : 표준 출력의 결과를 파일에 추가모드로 저장하는 기능
        • sort와 < : 파일의 내용을 전달하여 정렬 후 출력
        • | 은 왼쪽 실행문의 결과값을 오른쪽 실행문의 입력값으로 전달
      • grep
        • 파일 내에서 특정 패턴이나 문자열을 검색
        • 기본 사용법
        • grep [옵션][패턴] [파일명]
          • -r옵션 : 디렉토리 내 모든 파일에서 검색
          • -i옵션 : 대소문자 구분 없이 검색
          • -n옵션 : 라인수 출력
          • 예시)grep -rin "hello" mydir
            • hello 문자열을 라인수와 함께 mydir폴더에서 대소문자 구분 없이 검색
      • find
        • 파일이나 디렉토리를 검색하여 위치 출력
        • 기본사용법
          • find [경로][옵션] [행동]
          • -name옵션 : 파일명으로 검색
          • -type: 타입으로 검색 (f는 파일, d 디렉토리 등 파일타입으로 검색)
          • -exec, \, {}
            • exec : find로 찾은 결과에 대해 실행명령.
            • \ : exec의 종료지점을 의미
            • {} : find로 찾은 대상이 담기는 공간을 의미
        • 사용예시
          • find . -type f -name ".txt" : 현재폴더에서 파일타입 중에 .txt로 끝나는 파일명 검색
        • 활용예시
          • find . -name ".txt" | xargs grep -n “hello”
            • |(파이프라인)을 통해 그 다음 명령어로 전달
            • xargs는 입력받은 파일을 한줄씩 읽는것을 의미
          • find . -name ".txt" -exec echo {} \;
            • find로 찾은 파일에 대해 echo명령어 실행
            • find . -name "*.txt" -exec cp {} ./testFolder/ \;
    • 사용자와 그룹
      • 리눅스에서 super권한이 있는 root계정과 그외 계정으로 사용자는 구성
      • 신규 사용자 생성 및 비밀번호 입력
        • useradd newuser
        • passwd newuser
      • 사용자 교체후 파일권한 관련 테스트
        • su - newuser 엔터 후 전환하고자 하는 계정의 비밀번호 입력
        • 원래 사용자로 돌아오려면 exit
        • root계정으로 교체하려면 su -
        • sudo 키워드는 현재 계정에서 root 권한을 이용하여 명령어를 실행하는 프로그램(현재 사용자의 비밀번호를 입력)
          • /etc/sudoers 파일에 sudo를 쓸수 있는 사용자와 명령어가 따로 정의돼 있어서 아무사용자가 아무명령어를 사용하는 것은 불가
      • 파일권한
        • chmod xxx test.txt
          • test.txt파일에 대하여 소유자:소유그룹:그외(other)에 대해 권한을 부여
          • 숫자 표기법
            • 권한은 rwx(421) 권한으로 구성(Read, Write, Execute)
            • 그러므로 chmod 777 test.txt 형식으로 변경
            • test.txt파일의 소유자,그룹,other에게 rwxrwxrwx권한을 부여한다는 의미
          • 기호적 표기법
            • 권한을 변경할 때, 숫자 대신 기호를 사용하는 방법
            • chmod u+x test.txt: 소유자에게 실행 권한 추가
            • chmod g-w test.txt: 그룹의 쓰기 권한 제거
            • chmod o=r test.txt: 다른 사용자의 권한을 읽기만 가능하게 설정
      • 파일 소유자와 그룹
        • chown 소유자:소유그룹 파일명
          • 특정파일의 소유자와 그룹을 새롭게 부여하는 것
    • 그외
      • 프로세스 관련
        • ps : 프로세스 목록조회
        • kill -9 [PID] : 프로세스 종료
      • 패키지 관련(yum, apt-get)
        • yum은 레드헷 계열, apt-get는 데비안 계열의 패키지 관리 도구
        • ex)sudo apt-get install openjdk-11-jdk
      • 네트워크 관련
        • ifconfig : IP정보 등 네트워크 설정정보 출력
        • ping [hostname/IP] : 네트워크 연결상태 확인
        • nc -zv 또는 telnet : 특정 port까지 열려있는지 확인
          • ex)nc -zv naver.com 443
        • netstat : 현재 서버에 연결된 네트워크 정보 출력
        • ssh : 원격 호스트와의 터미널 세션을 제공 ex)ssh [username]@[hostname/IP]
        • scp : 파일 전송 ex)scp [source][destination]
  • 쉘 제어문
    • if문(조건문)
      • if [ 조건 ]; then

        조건이 참일 때 실행할 명령

        elif [ 다른 조건 ]; then

        첫 번째 조건이 거짓이고 다른 조건이 참일 때 실행할 명령

        else

        모든 조건이 거짓일 때 실행할 명령

        fi
    • for문(반복문)
      for 변수 in 항목들; do

      반복할 명령

      done
  • vi 에디터
    • vi는 UNIX 기반 시스템에서 가장 오래된 텍스트 에디터 중 하나
      • 리눅스 기반 OS설치시 기본적으로 같이 설치
    • 리눅스에서 vi의 후속모델인 vim와 nano등의 에디터도 많이 사용
    • vi는 명령모드와 입력모드로 구성
      • 명령모드 : 텍스트를 편집하는 대신에 커서를 이동하거나 텍스트를 삭제/복사/붙여넣기 하는 등의 명령을 수행
      • 입력모드 : 텍스트를 입력하거나 수정
    • 주요 명령어 Untitled
      • 파일 열기
        • vi 파일명
      • 입력모드
        • i : 현재 커서부터 입력
        • o : 다음줄커서부터 입력
        • x : 현재 커서가 위치한 단어 삭제
        • dd : 현재 커서가 위치한 행 삭제
        • yy : 현재 커서가 위치한 행 복사
        • p : 현재 행 이후에 붙여넣기
      • 명령모드
        • esc
        • :w
          • 파일 저장
        • :q
          • 저장없이 vi 종료
        • :wq
          • 저장 후 vi종료
        • G
          • 파일의 마지막 줄로 이동
        • gg
          • 파일의 첫 줄로 이동
        • Ctrl + f
          • 한 페이지 아래로 이동
        • Ctrl + b
          • 한 페이지 위로 이동
        • /
          • 검색하기
          • 예를 들어, "hello"를 찾으려면 /hello 입력 후 엔터
  • 쉘 명령어 스크립트 작성
    • 쉘 명령어를 파일형태로 스크립트로 작성하고 실행하는 것이 가능
    • 파일 확장자 .sh
    • if, else 등 프로그래밍 언어 사용 가능
    • 실행방법
      • 현재 폴더에서 ./my_script.sh
    • 실습1
      • echo를 사용하여 script pratice1 start 출력
      • 새 디렉터리 'mydir' 생성
      • 'mydir'로 이동
      • 'mydir' 안에 빈 파일 'file1.txt'와 'file2.txt' 생성
      • 'file1.txt'에 echo를 사용하여 Hello from file1 메시지 작성
      • 'file2.txt'에 echo를 사용하여 Hello from file2 메시지 작성
      • 'file1.txt'를 'file1_backup.txt'로 복사
      • 'file2.txt'를 file2_renamed.txt로 이름 변경
      • Script completed 문구 출력
    • 실습2
      • 쉘 프로그래밍을 통해 if문을 활용해서 출력해보기
      • 쉘 프로그래밍을 통해 100개의 파일을 만들어보기
    • 실습3
      • find와 grep을 사용하여 현재 폴더에서 txt로 끝나는 파일에서 hello 문자열 검색하여 어떤 파일의 몇번째 line에 해당 문자열이 있는지 결과 저장
      • 결과가 저장된 파일을 cat을 이용하여 출력

0개의 댓글