본문 바로가기
Study/Linux,Ubuntu

Ubuntu,Linux(1)

by 왕방개 2024. 3. 27.

Golang ->Docker, Kubernetes ->Cloud

Linux ->C 기반이지만 점차 Rust 로 바뀔 예정

Cloud도 운영체제가 필요한데 Linux밖에 안남은 상황이라 AWS 입장에서 Linux 를 쓸 수 밖에 없었음

 

Linux 공부할 때

1)Computer  위에 설치 ->Private Cloud 구축

 

2)Virtual Machine 사용 ->호스트OS 위에 VM 위에 Guest OS 를 활용 =>우리는 이걸 사용!

3)public cloud의 machine을 이용 ->돈을 내야 함

 

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

1)가상화 소프트웨어

=>Windows: VMWare , Virtualbox

VMWare Player 다운로드

=>Mac: UTM

 

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

=>ubuntu 이미지

 

2.Linux

1)GNU  프로젝트

 

2)개요

=>리누스(개발자이름) + 유닉스( C로 만든 분산 운영체제)

 

3)계통도

=>Debian: Ubuntu 와 Mint - 개인용 운영체제로 많이 사용, 구글이 Ubuntu 를 주력으로 사용

 

=>SLS: SuSE 가 대표적인 버전인데 Java 진영에서 주로 이용

 

=>Redhat: CentOS(로키,안정화된 버전) , Fedora(테스트 버전), Redhat Enterprise(유틸을 추가해서 판매하는 유료 버전), 서버용으로 많이 사용

 

4)특징

=>공개 소프트웨어라서 무료

=>유닉스와 완벽한 호환성

=>서버용 운영체제로 주로 이용

=>GUI 환경도 제공

 

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

=>Kernel

-운영체제의 핵심

-시스템에 모든 자원을 관리

 

=>Shell

-사용자 인터페이스

-사용자의 명령을 받아서 커널에 전달해서 명령을 수행하도록 하고 결과를 받아오는 프로그램

 

=>유틸리티 및 응용 프로그램

- 유틸리티:운영체제에서 제공을 하는 경우가 많은데 없으면 많이 불편한 프로그램

-응용 프로그램: 특정 목적을 달성하기 위해 설치한 프로그램

 

6)설치 방법

=>컴퓨터에 직접 설치

=>가상 머신에 설치

=>퍼블릭 클라우드나 도커 같은 컨테이너에 설치

 

-가상머신 다운로드

https://customerconnect.vmware.com/en/downloads/details?downloadGroup=WKST-PLAYER-1751&productId=1377&rPId=117008

- ubuntu 다운로드

https://ubuntu.com/download/desktop 

 

7)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)서비스를 실행

sudo 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에 추가되었는지 확인하고 path에 없다면 전체 경로를 입력해야 합니다

직접 만든 파일이 현재 디렉토리에 있는 경우는 ./을 추가해보아야 합니다

 

-옵션: 명령의 세부 기능으로 - 나 --로 시작

-로 시작하는 경우는 옵션이 문자

 

 

 

 

--로 시작하는 경우는 옵션이 문자열

 

옵션이 여러 개인 경우 한번에 입력이 가능 : ls -a -l

특별한 경우가 아니라면 옵션은 순서가 없음:ls - l -a

 

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

-명령과 옵션과 인자는 공백으로 구분

-명령을 확인할 떄 []가 되어있으면 생략 가능

-명령에 |는 선택

-문자열,{},<> 형태는 필수

 

4)터미널 종료

=>exit 나 CTRL + D

 

6.시스템 종료

=>가상환경의 종료 기능을 이용

=>명령어는 poweroff, shutdown -P now, halt -p, init 0

=> 서버는 반드시 정상 종료되도록 해주는 것이 좋습니다

강제로 종료하는 것은 좋은 방법이 아닙니다

강제로 종료하는 경우 운영체제가 꺠지는 경우가 있음

=>종료할 때 옵션을 설정

shutdown -P + 10 : 10분후 종료

shutdown -r 22:00 : 오후 10시에 종료

shutfdown -c: 예약된 종료 취소

shutdown -k + 15: 15분 후에 종료된다는 메세지 전송 - 종료되지는 않음

 

7.재부팅 명령

=>reboot, shutdown -r now, init 6

 

8.로그아웃

=>logout

 

9.명령어 사용

1) 자동 완성 기능

=>명령어의 일부분만 입력하고 Tab을 누르면 일치하는 명령이 1개 밖에 없다면 자동완성 됩니다

ch를 입력한 상태에서 ch로 시작하는 명령이 chmod 1개 라면 ch를 입력하고 Tab을 누르면 자동 완성됩니다

 

2)History 기능

=>이전에 입력했던 명령어 사용

=>방향키 상하를 이용합니다.

=>윈도우에서도 동일

 

3)명령어 도움말

=>man 명령어

=>clear 명령어의 도움말:man clear

 

4)clear

=>현재 화면 삭제

 

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

 

=>date : 현재 시각과 날짜를 출력

=>timedatectl: 여러 시각(하드웨어 시계, 소프트웨어 시계,UTC등)을 출력

=>시간을 확인하는 것은 중요해질 수 있습니다.

프로그래밍에서 현재 시간을 사용하는 개념은 대부분 운영체제의 설정시간입니다.

 

Cron이 주기적인 작업을 수행해주는 software =>일종의 스케쥴러

머신러닝을 만들었을 때 a.py file에 모델을 훈련하는걸 쭉 적어놨을 떄 이 파일을 실행시키고 싶을때 python a.py라고 하면 수행

-LinuxCron =>operation

-PythonCron =>airflow =>programmer operation

-KuberCron =>cloud operation

 

데이터가 매번 들어올때 명령어를 치는 것 보다는 cron을 활용하는게 더 효율적임

 

근데 MacOS 같은 경우는 시간 설정을 안할 경우 Database자체가 실행이 안될 수 있음

운영체제를 설치하고나서 시간을 반드시 확인해야함. => Operator 가 하는 임무

데이터베이스나 프로그래머들한테도 문제가 생김 => 아예 다른 일이 생길 수도 있음

적어도 파이썬 코드를 짜고 나서 이거를 실행시킬 수 있어야함

 

데이터베이스를 만들고나서 한글이 잘 저장되는지 시간이 잘 맞는지 영어가 잘 들어가는지 다시 확인해야함. 데이터베이스는 한번 데이터가 들어가면 손대면 안됨.최대한 사람의 개입을 없애야 함. 데이터 전처리를 수집할 떄 하는게 ELT

 

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

=>logname: 사용 중인 로그인 이름

=>users: 접속한 사용자의 아이디

=>who:로그인 한 모든 사용자 계정

=>whoami:현재 우분투 사용 확인

 

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

=>uname [옵션]

=>옵션

a:모든 정보 확인

m:하드웨어 정보 확인

n:호스트 이름

r:운영체제 릴리즈 번호

s:운영체제 이름

v:버전 출시 일자

 

=>env: 환경 변수 확인

=>which [옵션] :명령어의 실제 경로 리턴

 

=>history: 실행한 명령어 목록 확인

-옵션

d [라인번호]:라인번호에 해당하는 명령어 사용 내역 삭제

c:전부 삭제

=>!라인번호:라인번호에 해당하는 명령 다시 수행

 

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

=>Mac 이나 Linux 는 관리자 와 일반 유저를 나누어서 관리

관리자만 수행할 수 있는 명령이 있고 일반 유저가 수행할 수 있는 명령으로 나누어집니다

일반 유저가 관리자 권한으로 명령을 실행하고자 하는 경우에는 명령어 앞에 sudo를 추가합니다

관리자 비밀번호를 요구합니다

=>sudo 는 관리자의 권한을 빌리는 것

 

9)계정 전환

=>su 계정: 현재 계정의 모든 설정을 그대로 둔 채 계정을 전환

=>su 계정 -: 현재 계저의 모든 설정을 버리고 새로운 계정의 설정을 가져와서 전환

 

 

10.리눅스의 디렉토리 와 파일

1)파일의 구성 요소

=>파일 이름:파일의 경로

=>I-node: 파일에 대한 정보를 저장한 자료구조

=>데이터 블록:실제 데이터가 저장되는 영역

포맷을 하면 데이터 블록이 지워지는게 아니라 파일 이름이 삭제 됩니다

file 을 저장하면 파일이름 , I -node , 데이터 블록 이렇게 3곳에 저장됩니다.

파일을 저장하면 filename에는 파일이름, 데이터 블록에는 내용, I-node에는 메타데이터가 들어갑니다.

delete을 하게 되면 filename이 삭제하고, 데이터 블록에는 쓰기 가능 영역을 배정받습니다

초기화를 하면 I-node까지는 지워지고, 데이터 블록에는 전부 쓰기 가능 영역을 배정받음

만약 복구 하게 되면 가장 최근에 지웠던 파일을 우선적으로 삭제합니다

 

 

2)파일이름

=>사용자가 파일을 사용 목적에 맞도록 사용(확장자를 이용)하고 해당 파일에 정확하게 접근할 수 있도록 구별할 수 있는 변별력(파일이름)제공

 

=>우분투에서는 특별한 확장자가 제공되지 않음

 

=>Windows 에서도 확장자는 열 수 있는 프로그램을 출력하기 위한 용도로 사용

확장자가 기능을 하는 것은 아님

 

3)I-node

=> Index Node 라고 불리우는데 파일을 기술하는 디스크 상에서의 데이터 구조(자료 구조)

=>파일에 대한 정보를 저장한 메타 데이터

 

4)데이터 블록

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

 

5)파일의 종류

=>우분투에서 관리하는 모든 데이터는 파일로 인식

=>우분투에서 파일의 종류는 일반 파일과 디렉토리 파일 그리고 특수 파일로 구분

=>일반 파일: 데이터를 관리하는데 주로 사용되는 일상적인 파일

=>디렉토리 파일: 디렉토리도 일반 파일로 관리

=>링크 파일

-시스템 사용자에게 편리성을 제공해주는 파일

-하드 링크

원본 파일 복사해서 원본 파일과 동일한 내용의 다른 사본 파일을 만드는 것

원본파일의 내용이 변경될 떄 복사된 링크 파일의 내용도 자동 변경됨

동일한 I -node 를 갖는 파일을 생성하는 것을 의미

리눅스를 서버로 쓸 수 있는 이유가 여기에 나옴

windows에는 계정이라는 개념이 있음 => 윈도우에 계정은 디렉토리 구분이라고 보면 됨

user_a user_b 가 있을 때 동시접속불가 

Linux 에서 계정은 동시 접속 가능

linux 는 하나 다운 받으면 동시에 변경 가능

 

-심볼릭 링크

아이콘 만들기

linux에서는 root 깔리는게 있고 user 에 깔리는 게 있음. 설치된거 열려면 항상 위치로 가야하는데, 심볼릭 링크를 만들면 어디에 있든 바로 실행 가능함

소프트 링크

바로가기 기능 - 경로가 길 때 빠르게 사용하기 위해서 만들어주는 링크

 

=>특수 파일

- Linux 에서는 하드웨어도 파일로 취급

 

=>Binary File(이진 파일)

-문자가 아닌 0 과 1의 값으로 구성되는 파일

 

=>파일의 종류 확인:file 명령어

file 파일경로

 

-file.profile: 문서 파일이라서 ASC|| test 로 나옴

-file Downloads: 디렉토리라고 나옴

-file /bin/bash :실행 가능한 파일이라고 나옴

6)디렉토리와 파일 관리

=>리눅스는 파일과 디렉토리를 계층형 구조로 구성

=>최상위는 root 디렉토리에 기반을 두고 있는데 / 로 표시

=>작업 디렉토리

-현재 사용중인 디렉토리를 의미하는 것으로 .으로 표시

-현재 작업 디렉토리를 확인하는 명령은 pwd

 

=>홈 디렉토리

-각 사용자에게 할당되는 디렉토리

-~로 표시

- cd

 

7)절대 경로와 상대 경로

=>절대 경로

-루트 디렉토리로부터 시작하는 경로

- /로 시작

 

=>상대 경로

-현재 디렉토리로부터 시작하는 경로

-현재 디렉토리는 ./로 나타내고 상위 디렉토리는 ../ 로 나타냅니다

 

8)이름 규칙

=> /는 파일명이나 디렉토리 명에 사용할 수 없음

=>파일과 디렉토리 이름에는 알파벳(한글 포함),숫자, .(마침표) 만 가능

=>대소문자 구별 (Windows 에서는 대소문자 구분 안함, 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

-기능:파일 정보 출력

 

=>ln

-기능: 하드 링크를 생성하는 명령

 

=>grep

-기능:검색

 

=>find

-기능: 파일이나 디렉토리 검색

 

=>which

-기능:명령파일의 위치를 찾는 명령

 

11.패키지 관련 명령어

1)apt

=>Advanced Package Tool 의 약자로 패키지 관련 명령어

Fedora 와 CentOS 에서는 yum 이라는 명령과 동일

node 에서는 npm 명령

python에서는 pip 명령

 

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

업데이트 되는 내용을 알려주거나 다운로드 받는 사이트를 기본적으로 제공할 수 없어서 중앙 Repository 를 만들어서 중앙 Repository에 필요한 내용을 업로드하고 다운로드 받습니다

각 프로젝트 마다 중앙 Repository 를 관리하는 방법이 다름

Windows 도 이러한 프로젝트를 수행

Mac은 Brew 가 유사한 프로젝트

 

2)apt-cache

=>패키지 데이터베이스에서 패키지와 관련된 정보를 출력

=>옵션

f:패키지에 대한 전체 정보 출력

h:도움말 출력

=>서브 옵션

stats:캐시 통계 정보 출력

pkgnames:사용 가능한 모든 패키지의 이름 출력

dump: 패키지 업그레이드

search [키워드]:검색

show [패키지이름]: 패키지 정보 출력

showpkg[패키지이름]:패키지의 의존성과 역의존성에 대한 정보 출력

 

3)apt -get

=>패키지 관리 명령어 중 하나

=>옵션

-d: 패키지 다운로드

-f: 의존성이 깨진 패키지 수정

-h:도움말

 

=>서브 명령

update

upgrade 

install 패키지이름

remove 패키지이름

purge 패키지이름: 패키지와 설정 파일 모두 삭제

autoremove

download 패키지이름: 다운로드만 받음

 

=>프로그램을 다운로드 받아서 설치하기 전에 apt-get update 와 apt-get upgrade 명령을 먼저 수행

명령이 수행되지 않을 때는 앞에 sudo를 붙여서 관리자의 기능을 빌려와서 실행

 

4)wget

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

https://www.ebi.ac.uk/~zerobino/velvet./vetvet_1.2.10.tgz 파일 다운로드

 

 

12.env

=>환경변수 설정 명령

env 환경변수이름 내용

 

13.vi 편집기

1)동작 모드

=>명령 모드: 명령을 입력하는 모드

 

=>입력 모드: 텍스트 편집을 위한 모드

 

2)vi 시작

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

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

=>명령 모드에서 입력모드로 갈때는 

i,I,a,A,o,O

 

=>입력모드에서 명령모드

ESC

 

4)종료

=>명령 모드에서 종료 명령 사용

=>저장하고 종료하고 싶으면

:wq! or ZZ

 

=>저장하지 않고 종료하고 싶으면

:q!

=>저장

w

d

 

'Study > Linux,Ubuntu' 카테고리의 다른 글

Linux(3)  (0) 2024.04.01
Linux(2)  (0) 2024.03.29