과제 : 리눅스 운영체제
what?
Linux를 공부합니다
why?
Linux환경에 익숙해지기 위한 개념 학습이 필요
how?
생활코딩 리눅스 영상을 보고 내용을 학습 후 이를 정리
linux file&directory
ls -al
: 파일의 목록을 보여줌(감춰진파일까지 전부)
ls
: 현재 위치 아래의 파일 보여줌
ls -l
: 현재 위치 아래의 파일 자세히 보여줌
pwd
: 현재 위치 경로를 보여줌
mkdir [파일이름]
: 디렉토리 생성
touch test.txt
: 비어있는 파일 생성
cd [파일이름]
: 해당 파일로 이동
rm
: 파일 및 디렉토리 삭제 명령어
cat
: 파일의 내용을 확인할 수 있음
파일과 디렉토리 구분!
drwxrwxr-x : 디렉토리
-rw-rw-r-- : 파일
linux help&man
명령어 --help
:해당 명령어의 옵션들을 확인
man 명령어
:명령어에 대한 자세한 설명 확인 -> /sort
입력 시 sort라는 단어만 찾을 수 있음
sudo
sudo 란? 슈퍼명령어, super user do
예시를 통해 알아보자
sudo를 써주지 않으면 권한 거부. 따라서, sudo를 통해 install가능!
file edit (nano)
nano를 통해 파일을 생성하는 법
nano
> enter > html 생성 > ctrl+O( 파일이름생성 ) > enter > ctrl+X( exit )
nano를 통해 파일을 수정하는 법
nano [파일이름]
package manager
apt package manager 를 사용하여 package manager를 알아봅시다.
1) sudo apt-get update
를 통해 최신상태로 업데이트
2) sudo apt-cache search htop
를 통해 시스템 상태를 조작하지 않지만 update 명령을 통해 가져온 패키지 메타 데이터에서 각종 유용한 정보를 검색하고 생성
3) sudo apt-get install htop
을 통해 htop을 다운로드
4) sudo apt-get install htop
를 통해 업데이트도 가능
5) sudo apt-get remove htop
를 통해 삭제 가능
file download (wget)
wget 이란????
HTTP 통신 또는 FTP 통신을 사용해 서버에서 파일 또는 콘텐츠를 다운로드할 때 사용하는 소프트웨어
-
how?
주소를 copy 해 wget 명령어 뒤에 paste 하면 파일을 다운로드 할 수 있습니다.
-
wget -O option
wget -O [파일이름] [주소]
: 파일을 지정한 이름으로 다운로드 가능
source download (git)
1) git 이 없다면 sudo apt-get install git
을 통해 다운로드
2) [오픈소스 코드의 주소]를 copy
3) git clone [오픈소스 코드의 주소] src
([오픈소스 코드의 주소]가 src라는 디렉토리에 다운로드 됨)
4) ls -l
을 통해 다운로드를 확인해볼 수 있음
CLI vs GUI
CLI(Command Line Interface)란?
- 글자의 입출력을 통해 사용자와 컴퓨터 간 소통하는 방식
- 대표적인 CLI로는 윈도우의 cmd, 맥의 terminal, 리눅스의 terminal
- 키보드 + 명령어 사용 가능
GUI(Graphic User Interface)란?
- 사용자가 그래픽을 통해 사용자와 소통하는 방식
- 그래픽으로 전달되는 그림이나, 아이콘을 통해서 소통
- 키보드 + 마우스 모두 사용 가능
Q. CLI 와 GUI 중 어떤 것이 컴퓨터 에너지를 많이 쓸까요?
A. 정답은 GUI 방식입니다!
- 일반인들이 사용할때에는 사용하기 쉬운 GUI를 권장합니다. 하지만 서버 컴퓨터나 데이터를 분석하는 시스템 등은 CLI를 사용하는 것으로 용량,cpu,메모리 등을 더 적게 사용할 수 있습니다.
- GUI방식은 배우기 쉽지만 순차적으로 진행하는 일을 자동화하기는 어렵습니다.
Why CLI?
1. sequence execution(순차 실행)
먼저 CLI환경에서 디렉토리에 접근하는 법을 생각해봅시다.
mkdir test
를 통해 디렉토리를 생성 > cd test
를 통해 디렉토리로 이동
우리는 이 과정을 mkdir test;cd test
이렇게 명령어 한줄로 작성 할 수 있습니다. 컴퓨터는 순서대로 그 명령들을 실행하고, 최종적인 결과만을 알려줍니다.
2. pipline(파이프라인)
- 파이프의 정의 : '무언가를 어느 한 곳에서 다른 곳으로 전송한다'
- 파이프라인(|)의 특성
1) 프로그램과 프로그램을 연결한다
2) 하나의 명령의 실행 결과를 다른 명령의 입력으로 준다
(= 하나의 프로그램의 결과를 다른 프로그램의 입력으로 준다)
(= 하나의 프로세스의 출력의 결과를 다른 프로세스의 입력으로 준다)
✋ 여기서 잠깐 grep 명령어를 알아봅시다!
- EX 1) test.txt 안에서 linux가 포함되어 있는 행만 출력
=>grep linux test.txt
명령어 사용- EX 2) ls --help 안에 sort라는 문자가 포함된 행만 출력
=>ls --help | grep sort
- EX 3) ls --help 안에 sort라는 문자가 포함되어 있으면서 file이라는 문자도 포함되어 있는 행만 출력
=>ls --help | grep sort | grep file
IO Redirection Output
그림을 통해 알아봅시다UNIX 계열의 시스템은 어떤 프로그램이 실행되면, 그것을 프로세스라고 합니다.
- command line arguments : 명령어에 부가적으로 붙는 옵션
- 어떤 프로세스가 실행되는 출력값
- standard output : 명령어를 통해 얻은 결과
- standard error
standard output
ls -l 의 내용을 result.txt로 보내기
=>ls-l > result.txt
=>cat result.txt
=> ls -l의 내용이 result.txt로 보내진 것을 확인할 수 있음
- Command line Arguments -> 프로세스 -> Standard Output에 대한 작업을 Redirection
- 즉, 화면으로 출력되는 방향을 다른 곳으로 돌려서 파일에 저장한 것
standard error
첫번째 예시에서는 에러메세지가 reult2.txt에 담기지 않음
why?
첫번째 예시에서 사용한 '>'의 앞에는 1이라는 숫자가 생략되어있고, 이것은 Standard Output을 Redirection 한것입니다. Standard Error를 Redirection을 한 것이 아닙니다. Standard Error를 Redirection 하려면 '>'앞에 2라는 숫자를 넣어주어야 합니다.
'>'는 명령어를 실행할 때마다 새로운 내용을 넣게 됩니다. 로그를 계속해서 추가해 내용을 저장해야 할 경우가 생길 수 있습니다. 그렇다면 내용을 이어붙일 수 있는 방법은 무엇일까요?
바로 '>>' 이렇게 적어주는 것입니다.
IO Redirection Input
cat
은 그림의 Unix process에 해당명령어 cat
을 통해 사용자가 키보드를 통해 입력하는 정보를 standard input으로 받음.
명령어 cat
을 통해 hello.txt의 내용을 standard input으로 받음.
linux.txt 의 내용이 입력이 되어 one.txt로 들어가게 됨.
Shell vs Kernel
Kernel
- 알맹이, 핵심, 코어
- Kernel이라고 하는 프로그램은 하드웨어 즉, 물리적인 기계를 직접적으로 제어하는 운영체제에서에서 가장 중심이 됨
Shell
- 껍데기, 주변
- 사용자는 Linux에서 Shell을 대상으로 명령를 입력하고
예) ls -al, ls;pwd 등 - 사용자가 커널을 직접적으로 제어할 수 없기에 사용자가 입력한 명령을 해석해서, 커널이 이해할수 있는 방식으로 커널에게 전달
bash vs zsh
Shell 프로그램 : bash,zsh
shell 이라는 카테고리에 속하는 구체적인 제품 중 하나인 bash 프로그램을 쓰고 있다
shell 프로그램 zsh를 사용하고 있다
- bash와 zsh는 유사한 특성을 가짐
- zsh의 경우 bash가 갖고 있지 않은 추가적인 기능들이 있어서 좀 더 편리하다라고 평가를 받고 있음
Shell Script
- 여러개의 명령어를 순차적으로 실행해야하는 명령의 순서를 script로 작성 후 저장하고 필요할 때마다 불러와서 실행함
- 명령을 실행시키는 작업을 한번에 실행 => 자동화
자동으로 backup해주는 shell script를 작성해 봅시다!
1) nano backup
을 통해 빈 파일 생성
[backup]파일 안에 쉘스크립트를 적어줌
#!/bin/bash
if ! [ -d bak ]; then
mkdir bak
fi
cp *.log bak
- #!/bin/bash
- 밑에 작성되는 코드들이 bin/bash 라는 프로그램을 통해서 해석되어야 한다는 표시이다 - if ! [ -d bak ]; then
mkdir bak
- 현재 디렉토리에 bak 파일이 없다면 만들어주고 있다면 만들지 않음 - fi
- 조건문이 끝났다는 것을 알려줌 - cp *.log bak
- 파일중에 .log로 끝나는 파일을 bak라는 디렉토리로 복사
2) backup파일을 실행하려고 하면 접근 권한이 없다는 오류가 남
따라서 실행가능한 파일을 만들려면
$ chmod +x {shell파일명}
를 사용해야함 => 실행가능한 모드를 추가한 것
Directory structure
- / - Root
- 모든 단일 파일 및 디렉토리는 루트 디렉토리에서 시작합니다.
- 루트 사용자 만이 디렉토리 아래에 쓰기 특권이 있습니다.
- / bin - User Binaries
- 사용자가 사용하는 명령어가 있음
예 : ps, ls, ping, grep, cp.
- / sbin - System Binaries
- / bin과 마찬가지로 / sbin도 바이너리 실행 파일을 포함합니다.
- root 사용자(시스템 관리인)가 일반적으로 사용하는 명령어
- 예 : iptables, reboot, shutdown
- / etc - Configuration Files
- 모든 프로그램에 필요한 구성 파일이 들어 있음
- 시스템이 동작하는 방법의 설정을 변경하고 싶다면 이 파일을 찾기
- / dev - Device Files
- 장치 파일을 포함합니다.
- 여기에는 터미널 장치, usb 또는 시스템에 연결된 모든 장치가 포함
- / proc - Process Information
- 시스템 프로세스에 대한 정보가 들어 있습니다.
- 이 파일 시스템은 실행중인 프로세스에 대한 정보를 포함
- / var - Variable Files
- var은 변수 파일을 나타냅니다.
- 증가 할 것으로 예상되는 파일의 내용은이 디렉토리에서 찾을 수 있습니다.
- 임시파일을 저장하기에 좋은 디렉토리
- / tmp - Temporary Files
- 시스템 및 사용자가 만든 임시 파일이 포함 된 디렉토리
- 이 디렉토리의 파일은 시스템이 재부팅 될 때 삭제됨
- / usr - User Programs
- 2 차 수준 프로그램의 바이너리, 라이브러리, 문서 및 소스 코드가 들어있음
- / home - Home Directories
- 모든 사용자가 개인 파일을 저장하는 홈 디렉토리.
- / boot - Boot Loader Files
- 부트 로더 관련 파일
- / lib - System Libraries
- / bin 및 / sbin 아래에있는 바이너리를 지원하는 라이브러리 파일이 들어 있습니다.
- 라이브러리 파일 이름은 ld 또는 lib .so입니다. *
- / opt - Optional add-on Applications
- opt는 선택 사항입니다.
- 개별 공급 업체의 애드온 응용 프로그램을 포함합니다.
- / mnt - Mount Directory
- sysadmin이 파일 시스템을 마운트 할 수있는 임시 마운트 디렉토리.
- / media - Removable Media Devices
- 이동식 장치의 임시 마운트 디렉토리.
- / srv - Service Data
- srv는 서비스를 의미합니다.
- 서버 관련 서비스 관련 데이터가 들어 있습니다.
- 예를 들어, / srv / cvs는 CVS 관련 데이터를 포함합니다.
참고 링크
Author And Source
이 문제에 관하여(과제 : 리눅스 운영체제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@claraqn/리눅스-운영체제-스터디저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)