DX Data School

Ubuntu Linux

Kim J 2024. 4. 1. 11:11

1. 가상 머신에 리눅스를 설치하기 위한 준비

1) 가상화 소프트웨어

  • Windows : VMWare, Virtualbox
    • VMWare Player 다운로드
  • Mac : UTM

2) 운영체제 이미지 (iso)

  • ubuntu 이미지

2. Linux

1) GNU 프로젝트

  • 유닉스와 호환되는 자유 소프트웨어를 개발하는 프로젝트
    • 라이센스 이름은 GPL(GNU General Public License)

2) 계통도

  • Debian : Ubuntu 와 Mint - 개인용 운영 체제로 많이 사용, 구글이 Ubuntu를 주력으로 사용함
  • SLS : SuSE가 대표적 버전 - Java 진영에서 주로 이용
  • Redhat : CentOS(로키, 안정화 된 버전), Fedora(테스트 버전), Redhat Enterprise(유틸을 추가해 판매하는 유료 버전), 서버용으로 많이 사용

3) 특징

  • 공개 소프트웨어라 무료
  • 유닉스와 완벽한 호환성을 가짐
  • 서버용 운영체제로 주로 이용
  • GUI 환경도 제공함

4) 리눅스(운영체제)의 구조

  • Kernel
    • 운영체제의 핵심
    • 시스템의 모든 자원을 관리

  • Shell
    • 사용자 인터페이스
    • 사용자의 명령을 받아 커널에 전달하여 명령을 수행하도록 하고 결과를 받아오는 부분

  • 유틸리티 및 응용 프로그램
    • 유틸리티 : 운영체제에서 제공하는 경우가 많고 없으면 불편한 프로그램
    • 응용 프로그램 : 특정 목적을 달성하기 위해 설치한 프로그램

5) Virtual Machine

  • 호스트 운영체제에 가상의 컴퓨터를 만드는 것
  • 가상의 컴퓨터에 운영체제를 설치하여 별도의 컴퓨터가 있는 것 처럼 사용이 가능
  • 가상의 컴퓨터에 설치된 운영체제를 Guest OS라고 함
  • 종류
    • VMWare : 윈도우와 리눅스에서 사용
    • Virtual PC : 윈도우에서만 가능
    • Virtual BOX : 윈도우와 리눅스에서 사용 가능하고 Mac 에서도 가능
    • UTM : Mac 에서 가능
  • 장점
    • 백업과 복원이 쉽다.
      • 다른 컴퓨터에서 동일한 형태의 게스트 운영체제를 사용하고자 할 때 이미지 파일만 복사해 다른 운영체제의 가상화 소프트웨어에서 열기만 하면 된다.
  • 단점
    • 속도가 느리다.
      • 호스트 운영체제와 게스트 운영체제가 동시에 실행 중이기 때문

3. 원격 접속 허용

1) 서버에 SSH를 설치

  • sudo apt-get update
  • sudo apt-get install openssh-server

2) 서비스를 실행

  • subo systemctl status ssh

3) 방화벽에 포트 개방

  • sudo ufw allow ssh

4. 원격 접속

  • Mac은 SSH가 설치되어 있으므로 ssh@IP
  • Windows는 별도의 원격 접속 프로그램 설치 - putty 많이 사용

5. 터미널

1) 개요

  • 명령어를 입력해서 실행되도록 해주는 명령어 입력 프로그램

2) 터미널을 연 경우 프롬프트

  • park@UbuntuPark:~$
    • park : 사용자 계정 이름
    • UbuntuPark : 호스트 이름으로 우분투 시스템
    • ~ : 사용자의 홈 디렉토리
    • $ : 사용자의 셸
      • 이 모양은 사용하는 셸의 종류에 따라 다르게 보인다. 관리자의 경우는 #으로 보임

3) 터미널 명령의 구조

  • 형식 : 명령 [옵션] [인자]
    • 명령 : 리눅스를 사용하기 위해 사용자가 입력하는 명령
      • 일반적인 명령은 명령어만 입력하지만 파일을 실행할 때는 현재 디렉토리에 있는 파일일 경우 ./를 붙여야 한다.
      • 명령어는 현재 디렉토리에서 찾고 없으면 path 라는 환경 변수에서 찾게 되는데 이 외의 경우에 존재하는 경우 경로명을 앞에 추가해야 한다.
      • 명령이 없다는 메세지가 나오면 명령의 설치여부를 확인하고 설치가 되었으면 path에 추가 되었는지 확인하고 없다면 전체 경로를 입력해야 한다.

    • 옵션 : 명력의 세부기능으로 - 또는 --로 시작
      • - 로 시작하는 경우 옵션이 문자
      • -- 로 시작하는 경우 옵션이 문자열
      • 옵션이 여러개인 경우 한번에 입력 가능 : ls - a - l (특별한 경우가 아니라면 순서 상관 없음)

    • 인자 : 명령에 전달하는 데이터

    • 명령과 옵션과 인자는 공백으로 구분함
    • 명령을 확인할 때 [ ] 가 되어 있으면 생략이 가능하다.
    • 명령에 | 가 있으면 선택
    • 문자열, { }, < > 형태는 필수

4) 터미널 종료

  • exit 나 CTRL + D

6. 시스템 종료

  • 가상 환경의 종료 기능을 이용
  • 명령어로는 poweroff, shutdown -P now, halt -p, init 0
  • 서버는 반드시 정상 종료되도록 해주는 것이 좋음
  • 종료할 때 옵션을 설정
    • shutdown -p +10 : 10분 후 종료
    • shutdown -r 22:00 : 오후 10시에 종료
    • shutdown -c : 예약된 종료 취소
    • shutdown -k : +15 : 15분 후 중료된다는 메세지 전송 (실제 종료되진 않음)

7. 재부팅 명령

  • reboot, shutdown -r now, init 6

8. 로그아웃

  • logout

9. 명령어 사용

1) 자동 완성 기능

  • 명령어의 일부부만 입력하고 Tab 키를 누르면 일치하는 명령이 1개 밖에 없다면 자동완성 된다.

2) History 기능

  • 이전에 입력했던 명령어 사용
  • 방향키 상하를 이용함 윈도우에서도 동일

3) 명령어 도움말

  • man 명령어
  • clear 명령어의 도움말 : man clear

4) 현재 화면 삭제

  • clear

5) 날짜와 시간 관련 명령어

  • date : 현재 시각과 날짜를 출력
  • timedatectl : 여려 시각(하드웨어 시계, 소프트웨어 시계, UTC 등)을 출력
  • 시간을 확인하는 것은 중요해질 수 있다
    • 프로그래밍에서 현재 시간을 사용하는 개념은 대부분 운영체제의 설정 시간

6) 시스템 사용자 정보 확인

  • lognaem : 사용 중인 로그인 이름
  • users : 접속한 사용자의 아이디
  • who : 로그인 한 모든 사용자 계정
  • whoami : 현재 우분투 사용 확인

7) 우분투 시스템 정보 확인

  • uname [옵션]
    • 옵션
      • a : 모든 정보 확인
      • m : 하드웨어 정보 확인
      • n : 호스트 이름
      • r : 운영체제 릴리즈 번호
      • s : 운영체제 이름
      • v : 버전 출시 일자
  • env : 환경 변수 확인
  • which [옵션] : 명령어의 실제 경로 확인
  • history : 실행한 명령어 목록 확인
    • 옵션
      • d [라인번호] : 라인번호에 해당하는 명령어 사용 내역 삭제
      • c : 모든 명령어 사용 내역 삭제
  • ! 라인번호 : 라인 번호에 해당하는 명령 다시 수행

8) 관리자 권한으로 명령어 수행

  • Mac이나 Linux는 관리자와 일반 유저를 나누어서 관리하기 때문에 관리자만 수행할 수 있는 명령과 일반 유저가 수행할 수 있는 명령으로 나누어진다.
    • 일반 유저가 관리자 권한으로 명령을 실행하고자 하는 경우 명령어 앞에 subo를 추가하며 이 경우 관리자 비밀번호를 요구한다.
    • sudo : 관리자의 기능을 빌리는 것
      • sudo which clear

9) 계정 전환

  • su 계정 : 현재 계정의 모든 설정을 그대로 유지하며 계정을 전환
  • su 계정 - : 새로운 계정의 설정을 가져와 계정을 전환

10. 디렉토리와 파일

1) 파일의 구성요소

  • 파일 이름 : 파일의 경로
  • I-node : 파일에 대한 정보를 저장한 자료 구조
  • 데이터 블록 : 실제 데이터가 저장되는 영역

2) 파일 이름

  • 사용자가 파일을 사용 목적에 맞도록 사용하고 해당 파일에 정확하게 접근할 수 있도록 구별할 수 잇는 변별력을 제공
  • 우분투에서는 특별한 확장자가 제공되지 않음
  • Windows 에서도 확장자는 열 수 잇는 프로그램을 출력하기 위한 용도로 사용

3) I-node

  • Index Node 라고 불리며 파일을 기술하는 디스크 상의 데이터 구조(자료 구조)
  • 파일에 대한 정보를 저장한 메타 데이터

4) 데이터 블록

  • 실제 데이터를 저장하는 블록

5) 파일의 종류

  • 우분투에서 관리하는 모든 데이터는 파일로 인식
  • 파일의 종류는 일반 파일과 디렉토리 파일 그리고 특수 파일로 구분
    • 일반 파일 : 데이터를 관리하는데 주로 사용되는 일상적인 파일
    • 디렉토리 파일 : 디렉토리 또한 일반 파일로 관리
    • 링크 파일
      • 시스템 사용자에게 편리성을 제공해주는 파일
        • 하드 링크
          • 원본 파일을 복사해 원본 파일과 동일한 내용의 사본 파일을 만드는 것
          • 원본 파일의 내용이 변경될 때 복사된 링크 파일도 자동으로 변경 됨
          • 동일한 I-node를 갖는 파일을 생성하는 것을 의미
        • 심볼릭 링크
          • 바로가기 기능 - 경로가 길 때 빠르게 사용하기 위해 만들어주는 링크
    • 특수 파일
      • Linux 에서는 하드웨어도 파일로 취급
    • Binary File (이진 파일)
      • 문자가 아닌 0과 1의 값으로 구성되는 파일
    • 파일의 종류 확인 : file 명령어
      • file 파일 경로
        • file .profile : 문서 파일이기 때문에 ASCll text 로 나옴
        • file Downloads : 디렉토리라고 나옴
        • file /bin/bash : 실행 가능한 파일이라고 나옴

6) 디렉토리와 파일 관리

  • 리눅스는 파일과 디렉토리를 계층형 구조로 구성
  • 최상위는 root 디렉토리에 기반을 두고있는데 / 로 표시
  • 작업 디렉토리
    • 현재 사용중인 디렉토리를 의미하는 것으로 . 으로 표시
    • 현재 작업 디렉토리 확인 명령어 : pwd
  • 홈 디렉토리
    • 각 사용자에게 할당되는 디렉토리
    • ~ 로 표시

7) 절대 경로와 상대 경로

  • 절대 경로
    • 루트 디렉토리로부터 시작하는 경로
    • / 로 시작

  • 상대 경로
    • 현재 디렉토리로부터 시작하는 경로
    • 현재 디렉토리는 ./ 로 나타내고 상위 디렉토리는 ../ 로 나타냄

8) 이름 규칙

  • / 는 파일명이나 디렉토리명에 사용할 수 없음
  • 파일과 디렉토리 이름에는 알파벳(한글 포함), 숫자와 . 만 가능
  • 대소문자 구별 (Windows 는 대소문자 구별 X, MySQL에서 기본 설정을 변경하지 않으면 대소문자 구분을 안하기 때문에 where절 사용 시 주의)
  • . 을 맨 앞에 붙이면 숨김 파일

9) 명령어

  • pwd : 현재 작업 디렉토리 확인
  • cd 경로 : 경로 이동
  • ls
    • 기능 : 디렉토리의 내용을 출력
    • 형식 : ls [옵션] [경로]
    • 옵션
      • a : 숨김 파일을 포함한 모든 내용 출력
      • l : 상세 정보 출력
  • mkdir
    • 기능 : 디렉토리 생성 명령
    • 옵션
      • p : 상위 디렉토리가 없는 경우 상위 디렉토리를 생성
  • rmdir
    • 기능 : 디렉토리 삭제 - 디렉토리 안에 파일이 있으면 삭제할 수 없음
    • 옵션
      • r : 디렉토리 안에 파일이 있더라도 강제로 삭제
  • touch : 크기가 0 인 파일을 생성하거나 존재하는 경우 최종 수정 시간을 변경
  • cp
    • 기능 : 파일이나 디렉토리 복사
    • 옵션
      • i : 동일한 파일이 존재하는 경우 대화형으로 작업 가능 ( 이 옵션이 없으면 덮어 씌움 )
      • r : 디렉토리를 복사할 때 사용
        • 여러개의 파일 경로를 입력해서 여러 파일을복사 할 수 있는데 이 경우 마지막은 복사 될 디렉토리
  • cat : 텍스트 형식의 파일을 출력

- cat 파일 경로 -> cat /etc/system/system.conf

  • more : 텍스트 형식의 파일을 화면 단위로 출력
  • head / tail : 파일의 맨 앞 또는 맨 뒤의 10줄을 출력
  • mv : 파일 이동
  • rm
    • 기능 : 파일 삭제
    • 옵션
      • i : 대화형으로 삭제
      • f : 강제로 삭제
      • rf : 하위 디렉토리 까지 강제 삭제
  • less : 텍스트 파일 내용 확인
  • file : 파일 정보 출력
  • In : 하드 링크를 생성하는 명령
  • grep : 검색
  • find : 파일이나 디렉토리 검색
  • which : 명령 파일의 위치를 찾는 명령

11. 패키지 관련 명령어

1) apt

  • Advanced Package Tool 의 약자로 패키지 관련 명령어
    • Fedora와 CentOS에서는 yum 명령과 동일
    • node 에서는 npm 명령
    • python 에서는 pip 명령

Linux, Python, Node 등은 Open Source 프로젝트이다.

업데이트 되는 내용을 알려주거나 다운로드 받는 사이트를 기본적으로 제공할 수 없어 중앙 Repository를 만들어 필요한 내용을 업로드하고 다운로드 받는다. 각 프로젝트 마다 중앙 Repository를 관리하는 방법은 다르다.

2) apt-cache

  • 패키지 데이터베이스에서 패키지와 관련된 정보를 출력
  • 옵션
    • f : 패키지에 대한 전체 정보를 출력
    • h : 도움말 출력
  • 서브 옵션
    • stats : 캐시 통계 정보 출력
    • pkgnames : 사용 가능한 모든 패키지의 이름 출력
    • dump : 패키지 업그레이드
    • search [키워드] : 검색
    • show [패키지 이름] : 패키지 정보 출력
    • showpkg [패키지 이름] : 패키지의 의존성과 역의존성에 대한 정보 출력

3) apt-get

  • 패키지 관리 명령어 중 하나
  • 옵션
    • -d : 패키지 다운로드
    • -f : 의존성이 깨진 패키지 수정
    • -h : 도움말
  • 서브 명령
    • update : 패키지 정보 업데이트
    • upgrade
    • install 패키지 이름
    • remove 패키지 이름
    • autoremove
    • purge 패키지 이름 : 패키지와 설정 파일 모두 삭제
    • download 패키지 이름 : 다운로드만 받음
  • 프로그램을 다운받아 설치하기 전 atp-get update 와 apt-get upgrade 명렁을 먼저 수행 명령이 수행되지 않을 때는 앞에 sudo를 붙여 관리자 권한을 빌려와 수행

4) wget

  • wget은 URL에서 데이터를 다운로드 받는 명령어

- https://www.ebi.ac.uk/~zerbino/velvet/velvet_1.2.10.tgz 파일을 다운

12. env

  • 환경 변수 설정 명령

- env 환경변수이름 내용

13. vi 편집기

1) 동작 모드

  • 명령 모드 : 명령을 입력하는 모드
  • 입력 모드 : 텍스트 편집을 위한 모드

2) vi 시작

  • vi 파일 경로 : 파일이 존재하면 편집 모드 파일이 없으면 생성

3) 명령 모드와 입력 모드 전환

  • 명령 모드 -> 입력모드

- i, I, a, A, o, O 중 하나를 입력하면 명령 모드에서 입력이 가능한 입력모드로 전환 됨

  • 입력 모드 -> 명령 모드

- ESC 를 누르면 입력 모드에서 명령 모드로 전환

4) 종료

  • 명령 모드에서 종료 명령을 사용
  • 저장하고 종료
    • :wq! 또는 ZZ
  • 저장하지 않고 종료
    • :q!
  • 저장만 하는 경우
    • w

'DX Data School' 카테고리의 다른 글

Cloud Service 종류  (0) 2024.04.01
Cloud Computing  (0) 2024.04.01
Numpy  (0) 2024.04.01
Github  (0) 2024.04.01
데이터베이스 연동 4  (0) 2024.04.01