리눅스
유닉스
- 미국의 전화회사 AT&T에 속한 벨연구소와 MIT가 1969년에 출시한 운영체제
- 유닉스는 학교/회사와 같은 기관에 상업적으로 유로로 판매됨.
- 유닉스는 개발자들이 소프트웨어를 개발하고 실행하기 편하게 개발됨 (비 개발자의 편의성을 염두하지 않음)
- 리눅스는 유닉스 기반
리눅스 탄생
- 리눅스 토르발즈가 1991년 linux kernel 발표
- 이후 리처드 스톨먼의 GNU(GNU is Not Unix)의 유틸리티 내장을 통해 운영체제로서 자리잡음
- GNU프로젝트 : 리처드 스톨먼의 주도하에 시작된 공개 소프트웨어 프로젝트
- 리눅스는 원래 커널이고 운영체제 리눅스는 GNU리눅스라 불러야 정식 명칭이 맞음
리눅스 종류
- 리눅스는 다양한 베포판들이 많지만 대표적으로 3가지의 파가 존재함

1) redhat
- 유로의 리눅스로 고객관리를 잘해야 했음.
- 서버를 타켓 (회사들)으로 만든 것
- 이를 위해 만든 무로 체험판(테스트버전)이 centos
- 현재 centos는 중지됨
2) debian
- 개인을 노리고 만든 리눅스
- 무료로 개방되어 있음
- centos가 중지되어 ubuntu로 많이 넘어옴
- 따라서 ubuntu도 데스크탑과 서버 버전으로 나누어져 있음.
3) slackware
AWS 에서 EC2 만들기
- linux 서버를 사용하기 위해 EC2를 이용함
- EC2 인스턴스 : 서버
- 인스턴스 만들 때, key를 새로 만들거나 기존의 있는것을 사용할 수 있지만 그게 어느 경로에 다운받아져 있는지는 알아야함.
- 인바운드 규칙
- 나의 서버로 어떤 것이 들어올 수 있냐를 설정해주는 규칙
- 기본적으로 22(ssh) 는 열려있음.
인스턴스를 만든 후 , 우분투에서 실행시키기
chmod 400 key경로
ssh ubuntu@IP주소 -i key경로
리눅스 기초 용어
바이너리
바이너리
실행가능한 이진수로 이루어진 파일을 의미
- 기계어라고 하기도 함
- 윈도우에서 실행 파일을 생각하면 비슷한 개념
- 바이너리는 주로 /usr/bin 혹은 /usr/sbin 디렉토리에 존재함
- GNU core Utilities 들도 모두 바이너리 파일이기 때문에 위 폴더 경로에 존재함
GNU Utilies
GNU Binary Utilities
- 바이너리 유틸리티는 바이너리를 조작하거나 정보를 위한 프로그램들의 모임
- 여러 종류의 오브젝트 파일 형식을 조작하기 위한 프로그래밍 도구 모임
- 소스코드를 컴파일하고 이진파일을 생성하는데에 사용함
- as(어셈블리어), ld (링커), objcopy(객체파일 복사기) 등 이 있음
GNU core Utilities
- 사용자가 로그인 한 이후 일반적인 작업수행시 필요한 명령어
- 유닉스 계열 운영체제에 쓰이는 기본 도구들 다수의 재구현체들이 포함된 GNU 소프트웨어 패키지
- 우리가 사용하는 기본적 명령어를 포함하고 있음
- 이 또한 바이너리 파일로 되어 있음
- cat, ps, ls 등
directory
계정
root
- 관리자(administrator) 또는 슈퍼유저(superuser) 계정
- 시스템상에서 거의 모든 것을 할 수 있는, 믿을 수 있는 사람이 사용할 수 있는 계정
- 루트 권한을 활용하면 사용자 추가(계정 생성), 비밀번호 변경과 같은 시스템 설정가능
사용자 계정
- 보통 리눅스는 다중 사용자 시스템
- 하나의 root 계정 아래에는 여러개의 사용자 계정을 가질 수 있음
- 이 사용자 계정은 권한이 모두 다름 (적절한 자원 할당)
Shell
shell
- 운영체제 속 내용물에 접근할 수 있는 기능을 제공하는 프로그램(명령어들의 집합)
- 사용자가 글자를 입력하여 컴퓨터에게 명령할 수 있도록 하는 프로그램
- shell을 통해서 운영체제와 상호 작용이 가능함.
- bourne shell (/bin/sh)
- bash shell (/bin/bash)
- bourne again shell
- 리눅스에서 사용하는 쉘
- bash : 프로그래밍 언어
- bash script : bash 로 쓰여진 프로그램 코드
- zsh : 맥북에서 사용
- ssh(secure shell) : 보안접속 프로그램
리눅스 기본 파일 시스템

1) / : root
2) /root : root 계정의 홈디렉토리
3) /boot
- 부팅과 관련됨
- 커널 이미지가 존재함
- 컴퓨터 전원을 키면 여기 존재하는 파일들이 Ram으로 저장됨
4) /etc
- 기타 시스템 환경설정 파일 존재
- fonts, vim, python 등
5) /mnt
- 외부 파일 시스템 mount (임시로 마운트할때)
- 외장파드(usb), 보조기억장치 (ssd)
- 이어주기 위한 폴더
6) /proc : 프로세스 정보 (작업관리자)
7) /sys
- system에 대한 정보
- 현재 시스템 상태 및 하드웨어 정보와 관련된 파일
- power, kernel, dev, devices
8) /dev
- 시스템에서 사용하는 장치 파일들이 저장됨
- 하드웨어 장치나 가상 장치에 대한 파일들이 존재
9) /bin
- 바이너리 디렉토리
- 일반 사용 바이너리 파일들이 저장됨 (기본적인거)
- cat, chomd 등등
- usr/bin으로 링크가 되어있음
10) /sbin
- 기본적으로 필요한 System Program 관리 유틸리티
- adduser 등의 명령어
- ifconfig(네트워크설정 도구), fdisk (디스크 파티션관리도구) 등도 설치하면 여기에 저장됨
- 일반 사용자가 실행할 수 없는 시스템 관리작업을 위한 명령어 위치
- usr/sbin 으로 링크가 되어잇음
11) /lib
- 리눅스 자체 라이브러리 (os 라이브러리 - 커널을 도와줌)
- pip install 된건 포함되지 않음 (이건 pip list 를 통해 뽑아내야함)
- apt는 install 한거는 또 다른 폴더에 저장됨
- usr/lib 으로 링크가 됨
12) /usr
- Unix System Resource의 약자
- 보통 기본적으로 bin , sbin, lib 등 파일(폴더)들이 다 여기 저장되고 그냥 /bin, /sbin 등은 모두 /usr/bin , /usr/sbin 등등 으로 링크됨
