리눅스

신유빈·2023년 2월 27일
0

리눅스

리눅스의 특징

유닉스 기반
멀티 유저와 멀티 태스킹 지원
CLI 및 GUI 모두 지원
다양하고 강력한 네트워킹 기능

리눅스의 종류

패키지형식확장자명패키지관리자운영체제이름
레드햇.rmpyumCentOS, Fedora
데비안 레드햇.debaptUbuntu, Linux Mint, Lasbian
레드햇.apkAndroid Package Manager안드로이드 os

리눅스의 활용분야

네트워크 서버장비, 라즈베리파이(IOT), 리눅스 관련 개발 서버, 안드로이드, 개인PC, 블랙박스, TV셋톱박스, 정밀 의료기기

우분투

'우분투'란 남아프리카 반투어로 '네가 있으니 내가 있다'
데비안 GNU/Linux를 기반으로 제작된 데스크탑 환경을 사용하는 리눅스 배포판
“사람들간의 관계와 헌신에 중점을 둔 윤리 사상 혹은 인본주의 사상으로 평화운동의 사상적 뿌리”

우분투의 장점

개인용 PC 환경에 최적화
간결하고 쉽니다.
많은 사용자
약 6개월 단위로 업데이트(지원이 좋다)

우분투의 GUI

GNOME(그놈) 인터페이스

우분투의 버전

우분투는 일년에 두 차례 새로운 버전을 공개 나온 연도와 달로 번호를 지정
Ex) 19.04 - 19년도 4월에 공개됨

셸의 종류

이름키워드
Bourne-Again Shellbash
Bourne Shellsh
C Shellcsh
Korn Shellksh

Bash

bash는 GNU 프로젝트의 일환으로 개발됨
리눅스의 기본 Shell은 bash

리눅스 기초 명령어

whoami

elicer@a2e7ca1ee376:~$ whoami 
elicer

로그인한 사용자 ID를 알려주는 명령어

passwd

elicer@a2e7ca1ee376:~$ passwd 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

로그인한 사용자의 비밀번호를 변경하는 명령어

pwd

elicer@a2e7ca1ee376:~$ pwd 
/elicer/currentDirectory

"print working directory"
현재 디렉토리 위치를 출력
(도스와 마이크로소프트 윈도우의 경우 아무런 변수를 지정하지 않고 cd라고 입력하면 된다. )

ls

elicer@a2e7ca1ee376:~$ ls
elice_dir main.py conf.d try.sh

현재 디렉토리 내의 목록을 출력

ls -l

elicer@a2e7ca1ee376:~$ ls -l 
drwxr-xr-x 1 elicer elicer   21 Sep 10 09:22 . 
drwxr-xr-x 1 elicer elicer   26 Sep 10 09:42 .. 
-rw-r--r-- 1 elicer elicer 4093 Mar 19 17:15 elice_utils.py 
-rw-r--r-- 1 elicer elicer    9 Jan  1  1970 main.sh

현재 디렉토리의 목록을 상세히 출력

ls -a

elicer@a2e7ca1ee376:~$ ls -a
.                .cash         .profile        바탕화면 
..               .config       공개            비디오 
.ICEauthority    .gnupg        다운로드         사진 
.bashrc          .local        문서            음악

숨겨진 파일이나 디렉토리를 포함하여 출력

ls -al

elicer@a2e7ca1ee376:~$ ls -al
drwxr-xr-x 1 elicer elicer   21 Sep 10 09:22 . 
drwxr-xr-x 1 elicer elicer   26 Sep 10 09:42 .. 
-rw-r--r-- 1 elicer elicer 4096 Mar 19 17:15 .cash 
drwx- - - - - -   1 elicer elicer 4096 Mar 19 17:15 .config 
-rw-r--r-- 1 elicer elicer    9 Jan  1  1970 main.sh

숨겨진 파일이나 디렉토리를 포함하여 현재 디렉토리의 목록을 상세히 출력

cd

elicer@a2e7ca1ee376:~$ cd my_project elicer@a2e7ca1ee376:/my_project$ 

해당 디렉토리로 이동

--help

elicer@a2e7ca1ee376:~$ ls --help 

Usage: ls [OPTION]... [FILE]... 
List information about the FILEs (the current directory by default).
.
.
.

사용하고자 하는 명령어 뒤에 붙여서 사용
명령어에 대한 사용 방법이 출력됨

패키지 관리자 - apt

apt

Advanced Packaging Tool
데비안 리눅스(.dev) 또는 파생된 배포판(우분투)에서 소프트웨어를 설치, 제거, 업데이트할 때 사용

최신의 우분투 버전에서는 apt-get과 apt-cache가 합쳐진 apt라는 키워드를 제공한다.

최신기존
apt installapt-get install
apt removeapt-get remove
apt updateapt-get update
apt searchapt-cache search
apt showapt-cache show

apt는 관리자 권한이 없으면 사용이 불가능하다.
sudo를 붙이고 명령어를 입력한 후, 우분투 설치 시 지정했던 비밀번호를 입력해주면 된다.

sudo apt install nano

root

리눅스에서 모든 권한을 가지고 있는 최고 관리자를 뜻함.
운영체제에 모든 것을 제어할 권리를 가짐.
“sudo 사용할 명령어” 의 방식으로 권한 획득 가능
Ex) sudo apt install package

용어 사전

UNIX

Uniplexed Information and Computing System (Multics 운영체제에 대한 말장난이라고 한다.)

유닉스(Unix)는 벨 연구소에서 개발한 운영 체제로, 대부분의 현대적 컴퓨터 운영 체제의 원형이 되었다. 윈도우를 제외한 BSD등의 대부분의 운영 체제가 유닉스를 그 뿌리로 하고 있다.

1960년대 후반 MIT 대학과 벨 연구소에서 개발을 시도해 1969년에 출시한 시분할 운영 체제 멀틱스(Multics(Multiplexed Information and Computing Service))가 그 기원이다.
멀틱스는 엄청 복잡해서 비싼 대형컴퓨터에만 돌아갔다.

그러다가 켄 톰슨이란 사람이 대형컴퓨터에서 월루하면서 게임만들다가 걸려서 미니컴퓨터에서 돌아가는 가벼운 운영 체제로 수정하다가 유닉스를 만들게 됐다.
Multics(Multiplexed Information and Computing Service)는 다중 사용자를 지원하였지만, Unix는 원래 한명의 사용자만 지원하였다고 한다.
이는 Multics의 싱글 유저 버전을 만들려고 했기 때문이라고 한다.

POSIX

POSIX는 IEEE가 제정한 유닉스의 애플리케이션 프로그래밍 인터페이스(API) 규격이다. 이 규격을 따르면 유닉스와 직접적인 연관이 없어도 유닉스 호환(Unix-like) 운영 체제라고 부른다. 리눅스가 이런 케이스인데, 유닉스와는 별도로 개발되었지만 POSIX 표준을 거의 다 준수하기 때문에 리눅스는 유닉스 호환 운영 체제로 본다. 다만 공식 인증을 받은 경우는 흔치 않으며, 넓게 봐서 호환 운영 체제라는 얘기.

커널

Kernel

커널은 장치의 하드웨어 리소스를 관리하고 운영체제의 다른 모든 부분을 제어하는 소프트웨어이다.

운영체제의 심장이자 이를 규정짓는 매우 중요한 소프트웨어.

하드웨어의 자원을 자원이 필요한 프로세스에 나눠주고, 덩달아 프로세스 제어(작업 관리), 메모리 제어, 프로그램이 운영 체제에 요구하는 시스템 콜 등을 수행하는 부분으로 운영 체제 맨 하부에서 돌아간다.

현재 많이 사용되고 있는 운영 체제는 커널 위에 여러 가지 소프트웨어 계층을 올린 것.

이렇기 때문에 커널이 날아가게 되면 운영 체제를 못 쓰게 된다. 이 커널도 한번씩 오작동 하여 정지할 때가 있는데, 이를 가리켜 커널 패닉이라고 부른다. 요즘은 억지로 볼 수는 있지만 베타 테스트 버전이 아닌 이상 일반적인 상황에선 보기 어렵다.

어쨌든 커널로 운영 체제의 정체성을 결정하기에 매우 중요하다고 볼 수 있다. 페도라, 우분투 등이 리눅스로 묶이는 것도 이들이 같은 리눅스 커널을 사용하고 있기 때문.

GNU 프로젝트

Gnu is not Unix
리처드 스톨먼의 자유 소프트웨어 재단(Free Software Foundation)에서 진행하며 유지 중인 OS 프로젝트.

유닉스 운영체제를 여러 회사에서 각자 개발하며 소스 코드를 공유하지 않는 문화에 대한 반발로 생겼다.

각종 자유 소프트웨어들이 돌아가고 번영할 수 있는 기반 생태계를 구축하기 위해 GNU 개발을 시작했다.

자유소프트웨어 재단에서 말하는 자유는 free beer(공짜 맥주) 할 때의 free가 아니라, freedom(자유)의 free이다. "소프트웨어를 자유롭게 사용, 변경, 연구, 배포할 권리"를 뜻한다.

GNU 팬들은 소프트웨어가 사용자의 자유를 존중하는 것을 가장 최우선의 가치로 두며, 사용자의 자유를 침해하는 소프트웨어나 그런 소프트웨어를 만드는 단체/기업을 극도로 싫어한다. 대표적인 예는 마이크로소프트와 우분투. 우분투는 사용자를 추적한다고 대놓고 써 있다.

리눅스 커널과 FSF의 GNU 소프트웨어가 결합된 것이 현재 GNU/Linux의 기원이다.

리눅스

Linux라는 이름은 Linus'nix, 리누스의 유닉스라는 뜻으로 지어졌다. nix는 Unix 계열 운영체제라는 뜻이다. 나중에 Linux Is Not UniX라는 재귀약자를 새로 만들어냈다.

컴퓨터 OS 커널의 일종인 리눅스 커널, 또는 리눅스 커널을 사용하는 운영체제를 가리키는 말이기도 하다.

소스 코드가 공개되어 있는 대표적인 오픈 소스 소프트웨어다. 컴퓨터 역사상 가장 많은 참여자가 관여하고 있는 오픈 소스 프로젝트다. 모바일 운영체제로 유명한 안드로이드 역시 리눅스 커널을 가져다 쓰고 있다.

리눅스 OS 커널 소스코드는 GPL 라이선스이다. Linux 등록 상표 사용에 대해서는 2008년 까지 유료 였으나 그 이후 부터 무료로 사용이 가능하다.

리눅스 환경은 윈도우등 타 OS에 비해 안전한 환경이다. 슈퍼 유저, 일반 유저, 그룹 등으로 파일 관리가 되고 있고 커널 자체에 시큐러티 기능이 있기 때문이다. 더욱이 리눅스 배포자가 분산되어 있고 악성코드가 주로 윈도우를 타겟으로 하고 있기 때문이다. 리눅스 시큐리티 관련한 업데이트시 재부팅이 거의 없는 것도 특징이다. 해커들은 리눅스 보다는 윈도우를 타겟으로 한 바이러스를 많이 만들고 있다.

홈서버든 상업용 서버든 점유율이 윈도우보다 훨씬 높다. 무료인 데다가, 오픈 소스고, 리눅스에 익숙한 인력도 많고, 안정성도 높은 편이니 서버 운영체제로서는 최적인 셈이다. 요즘에는 윈도우스 서버도 성능이 어느 정도 높아져서 점유율이 약간 늘었지만 클로즈드 소스에다 가격도 비싸고 서버 시장에서 비주류인지라 여전히 리눅스 서버에 비할 바는 되지 못한다.

GUI가 없는 환경은 가벼워서 서버 성능에도 도움이 되고 보안에도 도움이 된다. 리눅스는 GUI를 선택적으로 사용할 수 있지만 윈도우는 GUI 부분을 삭제하는 것 자체가 불가능하다. 서버 관리에 있어서 CLI는 GUI보다 효율이 압도적으로 뛰어나다. 이러한 전문적인 환경에서는 GUI가 CLI의 효율을 따라잡을 수 없다.

우분투

데비안 GNU/Linux를 기반으로 제작된 데스크탑 환경을 사용하는 리눅스 배포판
리눅스 커널을 기반으로 한 리눅스 배포판 중 하나. 영국의 소프트웨어 회사 캐노니컬과 우분투 재단이 개발, 배포, 유지보수를 맡고 있다.
'우분투'란 남아프리카 반투어로 '네가 있으니 내가 있다'라는 윤리 사상을 일컫는 말로 공동체 정신, 인류애를 뜻하는 단어다. 그래서인지 로고는 사람들이 손에 손을 잡는 모습이며 로그인 시 아프리카 북 소리가 났었다. 20.04 LTS 버전 기준으로는 나지 않는다.

LTS

LTS는 Long Term Support의 약어로 가장 안정적인 버전!

Shell

Shell은 커널과 사용자 사이를 이어주는 역할을 한다.
사용자의 명령을 해석하여 커널에 명령을 요청

운영 체제에서 커널과 이용자 사이에 끼어서 이용자의 명령을 해석하고 그 처리 결과를 뿌려주는 시스템 프로그램.

Shell의 사전적 의미인 조개/소라 껍데기에서 따온 말로 내부의 커널이 있고 사용자는 이를 감싸고 있는 껍데기를 통해 커널에 접근한다는 개념으로 컴퓨터 초창기인 60년대부터 사용된 단어이다.

셸은 흔히 두 종류로 구분하는데, 명령 줄 셸과 그래픽 셸이다. 전자는 CLI이고 후자는 GUI라 부른다. CLI는 때때로 CUI(character 또는 console user interface)라고 부르기도 한다.

그 외에도 이 환경으로 접속하는 보안접속 프로그램(SSH; Secure SHell)을 일컫는 말이기도 하다.

sh

Bourne Shell (본 셸)
본 셸은 유닉스 버전 6 이하 버전에 있던 PWB 셸을 대체하기 위해 만들어졌다. 또한 유닉스 버전 7 이상 버전에선 본 셸로 대체되었다.

본 셸은 bash, zsh, csh 등등의 셸의 기반이 되었다고 해도 과언이 아니다.

대부분의 셸들에서 sh를 입력하면 실행시킬 수 있으며, macOS의 zsh에서 su명령어를 사용하면 root 권한의 본 셸이 실행된다.

csh

유닉스 계열 운영체제를 위한 셸. 1970년대에 BSD에 사용하기 위하여 개발되었다. 개발자는 BSD의 핵심 개발자이며 vi의 개발자로도 유명한 빌 조이.

현재는 csh을 개량한 tcsh이 사용되고 있다.

BSD 라이선스로 소스코드가 배포되는 오픈 소스 프로그램으로, BSD 유닉스 뿐만 아니라 타 유닉스 운영체제 및 리눅스, OS X에서도 사용이 가능하다.

bash

Bourne Again Shell

GNU 프로젝트의 일부로, Bourne shell을 대체하기 위해 만들어진 Unix계열 운영체제용 POSIX 셸. (이름도 영문으로 다시 태어났다는 뜻인 "Born Again"의 말장난이다)

거의 모든 리눅스 배포판에 기본 로그인 셸로 깔려있다. 그래서 보통 셸 스크립팅이라고 하면 십중팔구 Bash를 의미한다.

스크립팅 언어답게 인터프리터로 돌아가며, C로 개발되었다.

ksh

콘셸(Kornshell, ksh)은 1980년대 초에 벨 연구소의 데이비드 콘이 개발한 유닉스 셸로, 1983년 7월 14일 USENIX에서 발표되었다.

기타 초기 기여자들은 벨 연구소 개발자들인 마이크 비치(Mike Veach)와 팻 설리번(Pat Sullivan)이었는데 이들은 각자 Emacs와 Vi 스타일 라인 편집 모드 코드를 작성하였다.

콘셸은 본 셸과 하위 호환되며, 벨 연구소 사용자들의 요청을 통해 추가된 C 셸의 수많은 기능을 포함한다.

GUI

Graphical User Interface
사용자가 편리하게 사용할 수 있도록 기능을 아이콘, 이미지 등의 그래픽으로 나타낸 인터페이스
Windows와 Mac 운영체제 모두 GUI를 사용

CLI

Command Line Interface
문자로 사용자와 컴퓨터가 상호작용하여 동작하는 인터페이스
Windows의 CMD, Mac의 Terminal 등

CMD

명령 프롬프트(Command Prompt, cmd.exe)
Microsoft Windows의 기본 유틸리티로, Windows NT 계열 OS의 커맨드라인 해석기(CLI)이다. 윈도우 명령어 처리기(Windows Command Processor)라고도 불린다. 명령 프롬포트가 아니라 명령 프롬프트이다.

프롬프트

CLI 명령줄 프롬프트(prompt)

user000@Home:~$ //유닉스나 리눅스 환경의 프롬프트 라인의 예시
PS ~ > // MS윈도우의 파워셸 프롬프트 예시

0개의 댓글