이거는 pass..
-
Ubuntu에서 CLI 환경으로 바꾸는 단축키 :
Ctrl + Alt + F2
-
셀과 커널
- 커널 : CPU, Memory, SDD등 각종 디바이스를 통합관리하면서 그 연산자원을 수많은 어플리케이션들에게 분배하는 자리에 있는 것.
- ❗커널 ≠ 운영체제
- 그렇지만 보안, 자원관리, 디바이스 인터페이스 추상화 등 운영체제의 핵심적인 구성요소
- 셀 : 운영체제의 껍데기. 사용자와 커널을 연결해주는 인터페이스.
- CLI 셀
- GUI 셀
-
ls -alrt
명령어 -
운영체제의 자원 분배
- 메모리 관리 : OS는 프로세스가 컴퓨터의 전체 메모리 어디든지 쓸 수 있도록 하는 것이 아니라 가상 메모리(Virtual memory) 로써 일부만 떼어서 제공함. (프로레스 격리) 이때문에 프로세스들이 서로 소통하기 위해서는 별도로 허용된 프로세스간 통신(Inter-Process Communication, IPC) 기법들을 사용해야 한다.
- CPU 자원 관리 : CPU 연산의 경우 코어 단위로 프로세스에 제공. 프로세스는 스레드(thread) 라는 단위로 코어를 하나씩 사용할 수 있는데, 프로세스 하나가 시작되면 기본적으로 하나의 스레드를 가지고 시작하지만, 개발자는 프로그램이 더 많은 스레드를 사용하도록 설계하여 다중 CPU 코어의 이점을 극대화 함.
-
프로세스와 스레드
- 프로세스 : 현재 수행되고있는 작업.
- 스레드 : 프로세스의 실행 단위.
- 하나의 프로그램 안에서 여러개의 프로세스를 활용하는 것을 멀티프로세싱(multiprocessing) , 하나의 프로세스 안에서 여러개의 스레드를 활용하는 것을 멀티스레딩(Multithreading) 이라고 합니다.
-
터미널
- 개인용 컴퓨터가 등장하기 전 시절. 여러 대의 터미널을 한대의 메인프레임에 연결해 여러 사용자들끼리 나눠 사용했었다. 그때의 용어가 아직도 사용되는 중.
- 즉, 터미널이란 컴퓨터에 정보를 입력하고 출력하는 소프트웨어 및 하드웨어로써의 장치
-
프로세스 관리 명령어
ps
: 현재 터미널과 관련된 프로세스 목록 출력ps -ef
: 모든 터미널에서 현재 실행중인 프로세스 목록 및 부가정보를 출력kill -s KILL [프로세스번호]
: 현재 실행중인 해당 번호의 프로세스를 중단
-
시스템 콜(system call)
- 프로세스 관리는 커널의 고유 권한 → 커널의 approve가 있어야지 프로세스 관리가 가능. (프로세스 삭제, 실행 등)
- 이렇게 프로세스가 커널에게 요청을 전달하는 기능을 시스템콜(system call) 이라고 한다.
-
프로그램과 환경변수
which
: 명령어의 전체 경로 출력export
: 셀 변수나 함수를 현재 환경으로 내보냄env
: 명령어가 제공된다면 해당 명령어를 새로운 환경에서 실행. 명령어가 제공되지 않는 경우 현재 환경의 정보를 출력
-
패키지 관리자(package manager)
- 공인 저장소에서 프로그램과 다른 라이브러리를 패키지 단위로 설치하고 관리할 수 있도록 하는 프로그램.
apt-get
: APT(Advanced Packaging Tool) 패키지 관리자를 통해 공인 저장소에서 패키지를 가져다 설치하거나 제거하는 명령어
-
명령어 집합(Instruction Set)
-
TPU(Tensor Processing Unit)
-
ASIC(Application-Specific Integrated Circut, 어플리케이션 특화 집적회로)
-
FPGA
-
저장장치
- RAM : 주기억장치.
- 비싸다. 휘발성
- HDD & SDD : 보조 기억장치.
- 저렴하다. 비휘발성
- RAM : 주기억장치.
-
클라우드와 가상화
- 가상화(virtualization) : 하나의 컴퓨터를 쪼개어 여러대의 컴퓨터가 있는 것처럼 사용하게 하는 기술
- 호스트(host) : 실제 물리적인 서버
- 게스트(guest) : 그 안에서 돌아가는 가상 서버
- 가상화의 종류
- 가상머신(Virtual Machine) : 게스트가 운영체제 있음
- 컨테이너(Container) : 게스트가 호스트의 운영체제 커널을 공유해서 사용
ex. 도커
- 가상화(virtualization) : 하나의 컴퓨터를 쪼개어 여러대의 컴퓨터가 있는 것처럼 사용하게 하는 기술
-
sudo apt install curl
및curl parrot.live
를 통해 춤추는 앵무새를 볼 수 있습니다. -
셀 스크립트
- 셀 스크립트 내용은 아래와 같이 작성.
#!/bin/bash
필수!
#!/bin/bash echo "Hello" # 주석 echo "Bye"
- 실행하는 방법!
$ chmod +x test.sh $ ./test.sh
- 파이썬도 이렇게 실행할 수 있다.
- 셀 스크립트 내용은 아래와 같이 작성.
필수(❤️) 및 권장(👍) 명령어들은 한번씩 실행하거나, 사용법을 검색해 보는 것을 추천합니다.
- 셸 환경
- 👍**
history
**: 셸 명령어 이력을 출력합니다. - 👍**
man
**: 프로그램의 매뉴얼 페이지를 출력합니다. - 👌**
which
**: 명령어의 전체 경로를 출력합니다. - 👌**
export
**: 셸 변수나 함수를 현재 환경으로 내보냅니다. - 👌**
env
**: 명령어가 제공된다면 해당 명령어를 새로운 환경에서 >실행합니다. 명령어가 제공되지 않은 경우 현재 환경의 정보를 출력합니다.
- 👍**
- 텍스트 처리
- ❤️**
echo
**: 뒤이어 입력한 내용을 출력합니다. - ❤️**
cat
**: 하나 이상의 텍스트 파일을 순서대로 출력합니다. - 👍**
sort
**: 입력된 텍스트를 줄 단위로 정렬합니다. - 👍**
less
**: 텍스트 파일의 내용을 자유롭게 조회하고 검색합니다. - 👍**
head
**: 텍스트 파일의 앞 몇 줄만 출력합니다. - 👍**
tail
**: 텍스트 파일의 마지막 몇 줄만 출력합니다. - 👍**
cut
**: 텍스트를 구분자(delimiter)에 따라 나눕니다. - 👍**
uniq
**: 텍스트 중 중복 값들을 제거합니다. - 👍**
grep
**: 정규식을 활용해 텍스트를 검색합니다. - 👍**
wc
**: 텍스트를 단어, 줄, 문자 등 단위로 셉니다. - 👌**
comm
**: 텍스트 파일을 비교합니다. - 👌**
zcat
**: 압축된 텍스트 파일을 출력합니다. - 👌**
sed
**: 정규식을 활용해 텍스트를 변형합니다. - 👌**
awk
**: 텍스트를 스캔하고 변형합니다.
- ❤️**
- 파일 제어 및 이동
- ❤️**
ls
**: 현재 디렉토리 내의 파일 및 폴더들을 출력합니다. - ❤️**
cd
**: Change Directory의 약자로, 뒤에 따라오는 폴더로 >내가 있는 셸의 현재 위치를 이동시킵니다. - ❤️**
cp
**: 파일을 복사합니다. - ❤️**
mv
**: 파일을 이동합니다. - ❤️**
rm
**: 파일을 삭제합니다. 폴더를 삭제하기 위해서는-r
(recursive) 옵션을, 빈 폴더가 아니더라도 내부까지 삭제하려면-f
(force) 옵션을 함께 사용해야 합니다.
- ❤️**
- 👍**
chown
**: 대상 파일의 소유 사용자와 그룹을 변경합니다.- 👍**
chmod
**: 대상 파일의 권한을 변경합니다. - 👍**
find
**: 파일을 찾습니다. - 👍**
pwd
**: Present Working Directory의 약자입니다. 현재 내가 >위치한 디렉토리 위치를 출력합니다. - 👌**
ln
**: 파일에 대한 링크를 생성합니다. - 👌**
touch
**: 파일 접근 및 수정 시간을 변경합니다. 빈 파일을 만드는데도 사용할 수 있습니다. - 👌**
tar
**: 파일 및 폴더를 하나의 아카이브 파일로 통합하고 압축합니다. - 👌**
mount
**: 새로운 저장장치를 파일시스템으로서 추가합니다. - 👌**
rename
**: 여러 파일들의 이름을 규칙에 따라 한번에 변경합니다. - 👌**
df
**: 파일시스템의 남은 용량을 표시합니다.
- 👍**
- 시스템 및 프로세스 제어
- ❤️**
sudo
**: 이어지는 명령을 최고 관리자 권한으로 실행합니다. - ❤️**
apt-get
**: APT 패키지 관리자를 통해 공인 저장소에서 패 >키지를 가져다 설치하거나 제거합니다. - 👍**
ps
**: 현재 프로세스 목록을 출력합니다. - 👍**
kill
**: PID에 해당하는 프로세스에 시그널을 보냅니다. - 👌**
fg
**: 배경에서 실행되는 작업을 전경(foreground)으로 가져옵니다. - 👌**
bg
**: 작업을 배경(backgound)으로 보냅니다. - 👌**
jobs
**: 전경 및 배경 작업의 목록을 표시합니다.
- ❤️**
- 기타
- ❤️**
ssh
**: 원격으로 셸에 접속합니다. - 👍**
tmux
**: 여러 개의 셸 세션을 관리하고, 터미널 접속이 끊어지더라도 셸 세션을 유지합니다. - 👍**
watch
**: 이어지는 명령을 주기적으로 실행하여 표시합니다. - 👍**
curl
**: 주어진 URL과 통신합니다. - 👍**
wget
**: 네트워크를 통해 파일을 다운로드합니다. - 👍**
scp
**: SSH를 통해 원격으로 파일을 전송합니다. - 👌**
ssh-keygen
**: SSH 공개키 비밀키 쌍을 생성합니다. - 👌**
ssh-copy
**: SSH 공개키를 해당 서버에 등록합니다. - 👌**
rsync
**: 원격으로 파일을 동기화합니다. - 👌**
xarg
**: 명령어를 구성하여 실행합니다. 이전 명령에서 인자를 넘겨받아 실행하거나, 다중 프로세스를 사용하여 명령을 병렬로 실행하는 등의 작업이 가능합니다. - 👌**
cron
**: 주기적으로 실행될 명령을 등록합니다. - 👌**
htop
**: 프로세스 목록 및 자원 사용량을 시각적으로 표시합니다.
- ❤️**