-
[Linux] 리눅스란? (리눅스 종류, 리눅스 명령어)Linux 2023. 3. 26. 16:29
1. 리눅스란?
리눅스(Linux)는 윈도우(Windows)와 맥(MacOS)과 같이 컴퓨터 운영체제 중 하나
유닉스 운영체제를 기반으로 만들어진 운영체제로 리눅스는 유닉스와 마찬가지로 다중 사용자, 다중 작업(Multi-Tasking), 다중 스레드(Multi-Thread)를 지원하는 네트워크 운영체제이다. 리눅스도 유닉스와 마찬가지로 서버로 작동하는데 최적화되어 있다. 따라서 서버용으로 많이 사용된다. (오픈소스 소프트웨어로 서버를 구축하기 위해서 사용됨)
cf.
멀티 스레드 : 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것
운영체제(OS) : cpu, 메모리 등 하드웨어 관리하며 프로그램을 실행할 때 하드웨어가 잘 작동하도록 컴퓨터 사용 도우미 역할
2. 리눅스의 특징
- 리눅스는 유닉스와 완벽하게 호환가능
- 리눅스의 뛰어난 이식성
>> 리눅스는 약간의 어셈블리어와 대부분의 C언어로 작성되어 있다. 따라서 어셈블리어 부분만 새롭게 만들고 C 부분을 다시 컴파일 함으로써 쉽게 다른 시스템이나 환경 등에 이식하여 사용 가능
- 리눅스는 오픈소스로 공개된 운영체제로 누구든지 자유롭게 수정 가능
>> 운영체제의 핵심인 커널뿐만 아니라, 운영체제 프로그램에 내장되어 배포되는 대부분의 모든 응용프로그램들의 소스가 공개된 오픈 소스
- 리눅스는 PC용 OS보다 안정적이며, 보안면에서도 비교적 우수한 성능을 가짐
- 리눅스는 다양한 네트워킹 기술을 제공
>> 이더넷(ethernat)을 포함하여 SLIP, PPP, ATM 등의 다양한 네트워크 환경 지원하여 TCP/IP, IPX, AppleTalk 등 대부분 네트워크 프로그램 지원
- 배포판이 아닌 리눅스 그 자체는 무료
>> 서버는 24시간 365일 작동하며 이를 감당할 성능이 좋은 운영체제가 필요하지만 라이센스 결제 금액이 매우 비싸다. 따라서 오픈 소스 기반의 리눅스는 무료로 사용할 수 있어 비용적 측면에서 효율적이다.
- 다양한 배포판 존재
>> 리눅스는 서버, 개발용, PC용 등 다양한 목적으로 사용 가능하고 이에 따른 다양한 배포판이 존재한다. 레드햇, 데비안, 우분투, 수세 등
2-1. 리눅스의 단점
- 기술 지원의 부족
- 특정 하드웨어에 대한 지원 부족
>> 리눅스가 다른 운영체제에 비해 이식성, 확장성 등은 뛰어나지만, 여전히 특정 하드웨어에 대한 설치가 어렵고 모든 플랫폼에서 작동하는 만능 운영체제는 아니다.
- 사용자의 숙련된 기술 요구
3. 리눅스의 종류
- Ubuntu Linux
> 개인용 데스크탑에 최적화, 대부분 리눅스 배포판들이 서버용으로 사용되고 있지만 우분투는 개인 사용자와 데스크탑 환경에 최적화되도록 사용자 편의 중점으로 개발되고 있다.
> 시스템 관리 작업에서 sudo 도구를 사용한다
- Fedora Linux
> 그래픽 환경에서 설치하는 것을 지원
> RPM(Redhat Packaging Management)라고 부르는 쉬운 패키지 관리(설치, 삭제, 업데이트) 가능
> 쉬운 사용자 인터페이스 환경
- Red hat Linux
> 유료 배포판
> RPM 사용
3-1. 센트 OS
센트OS는 센트 OS 프로젝트에서 레드햇 제휴로 개발한 컴퓨터 운영 체제
red hat linux와 완전하게 호환 가능한 무료 기업용 리눅스
- 장점 :
1) 전 세계에서 점유율 1위
2) 무료로 사용 가능
3) 가볍고 안정적 운영 가능
- 단점:
1) 서버를 운용하는 도중 문제 발생 시 해결하기 위해 지원받을 수 없다.
2) 시스템 설정이 어렵다.
3) 지원 가능한 프로그램이 우분투에 비해 적다.
- 패키지 관리 방법
1) wget 주소
2) RPM
3) YUM
4. 리눅스 구조
리눅스의 구조는 크게 커널, 셸, 디렉토리 3가지로 구성
4-1) 커널(kernal) : 커널은 운영체제의 핵심으로 메모리관리, 프로세스 관리, 장치 관리 등 컴퓨터 모든 자원을 초기화하고 제어하는 기능을 수행한다.
4-2) 셸(shell) : 사용자가 입력한 문장을 읽어 요청을 실행하며 커널이 명령어를 해석해 결과를 수행한 후 다른 프로그램이나 커널로 전송한다. 즉 사용자와 커널의 중간다리 역할을 수행한다. 리눅스는 bash셸을 기본으로 사용한다.
4-3) 디렉토리 : 파일을 가지고 있거나 또 다른 디렉토리를 가지고 있는 그룹을 의미하며 파일 시스템에 의해 관리된다.
5. 리눅스 명령어
* 명령어 뒤에 옵셥을 입력하거나 옵션 뒤에 파일/디렉토리를 입력할 때는 한 칸씩 띄고 입력한다.
1. 디렉토리 이동
#cd . > 현재 디렉토리
#cd .. > 상위 디렉토리로 이동
#cd [이동할 디렉토리] > 해당 디렉토리로 이동
cf.
절대경로 : 리눅스의 디렉토리는 계층적 트리구조이다.
이때 파일 시스템이 있는 최상위 디렉토리는 /인데 최상위 디렉토리부터 파일명에 이르는 경로를 절대 경로라고 한다.
상대경로 : 현재 자신이 위치한 디렉토리를 기준으로 하는 경로를 상대경로라고 한다.
./는 현재 디렉토리, ../는 상위 디렉토리를 의미한다.
2. 현재 계정 확인
#id > 현재 로그인한 계정의 정보
#id [계정명] > 해당 계정명에 대한 정보
whoami
3. 현재 디렉토리 경로 확인
#pwd > print working directory
cf.
#ls -d > 현재 디렉토리의 정보
4. 현재 디렉토리의 모든 파일 확인
#ls -a > 숨김파일 포함하여 모든 파일의 목록 출력
5. 디렉토리, 파일의 권한 변경
#chmod [option] [mode] [파일/디렉토리]
> 문자모드 : u(사용자), g(그룹), o(소유자와 그룹을 제외한 사용자에 대한 권한), a(모든 사용자)의 소유자에게 +(권한추가), -(권한제거), =(권한 지정) 등의 명령어로 허가권 변경
> 숫자모드 : 8진수의 값을 만들어 허가권 변경
> 파일에 저장된 데이터 읽기(r), 파일에 데이터 쓰기(w), 파일 실행(x)
ex. chmod u+x file : 파일 소유 사용자에게 실행권한 추가
ex. chmod a-x * : 현재 디렉토리의 모든 파일에서 모든 사용자의 읽기 권한 제거
ex. xhmode 000 file : 모든 사용자의 모든 권한 제거
cf.
#ls -l > 파일, 디렉토리 권한 확인하기
6. 디렉토리, 파일의 소유자, 소유그룹 변경
#chown {소유권자}:{그룹식별자} {소유권을 변경하고 싶은 파일명/디렉토리명}
#chown -R {소유권자}:{그룹식별자} {소유권을 변경하고 싶은 디렉토리명} > 하위 디렉토리까지 소유권 변경
cf. ls -al > 소유권 확인
-rw-r--r-- 1 root(1) root(2) 1988 2월 20 13:07 anaconda-ks.cfg
> 허가권(rw-r--r-- 1) : 해당 파일 및 디렉토리에 대해 어느 수준으로 사용 권한을 허가하는지
> 앞에서부터 3자리씩, 소유자, 소속그룹, 나머지 사용자로 구분
> 소유권(root(1) root(2)) : 소유자 및 소유 그룹을 의미
> root(1) : 소유권자
> root(2) : 그룹식별자
cf. 리눅스의 그룹 : 어떤 파일이나 폴더를 특정 권한이 있는 사용자들끼리만 공유하기 위한 개념
7. 파일의 이름 변경, 복사, 이동, 삭제
#mv [이동시킬 파일 현재 경로/이동시킬 파일 이름] [목적 경로] > 파일 이름 변경
ex. mv test.txt test1.txt
#rename [변경전문자열] [변경후문자열] [변경대상파일명] > 파일 이름 변경
ex. rename test1.txt test.txt *txt
#cp [복사하려는파일명] [저장할파일명] > 파일 복사
#mv [이동하려는파일명] [디렉토리]/[이동후저장파일명] > 파일 이동
ex. mv test.txt xyz/test1.txt
#rm [파일명] > 파일 삭제
#rm *.txt > .txt 로 끝나는 파일 모두 삭제
#rm * > 모든 파일 삭제
8. 파일 검색
#find [옵션] [경로] [표현식]
ex. find / -name test
ex. find / -name "test*" -exec rm {} \ : 최상위 경로 밑에 있는 test로 시작하는 파일 및 디렉토리 검색과 동시에 삭제
9. yum을 이용한 apache 웹서버 프로그램 설치
#yum -y update > 시스템 소프트웨어 패키지 최신 버전으로 업데이트
#yum install httpd > yum 패키지 관리자를 사용하여 기본 소프트웨어 리포지토리에서 apache http 서버 설치
#systemctl start httpd
#systemctl enable httpd
#systemctl status httpd > apache 설치 후 시스템 부팅 시 자동으로 시작되도록 설정
# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload > http 및 https에서 인바운드 패킷을 허용하도록 시스템 방화벽 규칙 업데이트
10. 압축 풀기
#tar -cvf [파일명.tar] [폴더명] > tar 압축
#tar -zcvf [파일명.tar.gz] [폴더명] > tar.gz 압축
#zip [파일명.zip] [폴더명]
#tar -xvf [파일명.tar] > tar 압축 해제
#tar -zxvf [파일명.tar.gz] > tar.gz 압축 해제
#unzip [파일명.zip] > zip 압축 해제
cf.
tar >
데이터 크기를 줄여주기 위한 파일 압축을 수행하지 않는다.
단지 여러 파일을 하나의 파일로 묶는 용도로 사용될 뿐
> gzip 또는 bzip2 방식을 사용
11. vi 편집기 사용법
vi는 리눅스 환경에서 제일 많이 쓰이는 문서 편집기로 윈도우즈 메모장과 비슷
-명령모드
-명령라인모드
-편집모드, 입력모드
-비주얼모드
(출처)
https://contents.premium.naver.com/3mit/wony/contents/221123204036431dx
728x90'Linux' 카테고리의 다른 글
MobaXterm 글자 깨짐 인코딩 설정 (0) 2023.12.19 윈도우11 리눅스 개발환경, WSL2 설치하기 (0) 2023.12.13 [Linux] ping 명령 (0) 2023.03.26