IT Memory Note

[K-Shield Jr - 복습] 리눅스 서버 기본 활용 방안 1 본문

K-Shield Jr

[K-Shield Jr - 복습] 리눅스 서버 기본 활용 방안 1

h00ddu 2023. 8. 16. 19:07

 

리눅스 서버 종류와 특징

 
 

유닉스의 개요

 

  • 리눅스가 개발되었던 뿌리가 됨
  • 대부분 C언어를 기반하여 개발된 운영체제
  • 이식성이 강해 새로운 기종에 적은 노력으로 이식이 가능
  • 시분할 구성으로 다중 사용자, 멀티 태스킹, 이식성으로 설계
  • System V계와 BSD계로 나누어 지며, System V는 상업 지향적 성향을 가지고 있으며, BSD계는 연구 개발 지향적으로 개발

       → 현재는 두 장점을 모두 갖는 형태를 취함


유닉스의 종류

 

종류  설명
System V R4.0 유닉스 표준 버전으로 벨 연구소에서 개발된 유닉스 정식 이름
SCO UNIX Santa Cruz Operation사의 SCO Open Desktop과 SCO Open Release 3의 이름이며 UNIX SVR3.2.5의 구현 형태
SunOS Sun사의 BSD 계열 운영체제
Solaris · 대표적인 유닉스 운영체제로 꼽힘 
· Sun사의 SVR4 구현
HP-UX SVR4의 변형으로 HP사에서 개발된 운영체제
AIX · IBM의 System V 계열 운영체제로 SVR4, BSD, OSF/1 특징을 고루 가지고 있음 
· 인텔 프로세스를 위한 Free UNIX 방식의 운영체제

리눅스의 개요

 

  • 사유 유닉스에 반대하며 자유 소프트웨어 재단(Free Software Foundation)을 설립하고 유닉스의 복제본 GNU(GNU's Not Unix)를 개발 → GNU는 재귀적 용어
  • 자유 소프트웨어 재단은 사유 소프트웨어로 바뀌는 것을 막고자 GNU GPL(GNU General Public License)라는 규정을 만듦 
  • 이 활동이 부진해지자 리누스 토발즈가 리눅스를 개발 → 0.1 버전만 해당
  • 타 운영체제와 달리 리눅스 커널과 다른 구성 요소가 무료인 오픈 소스 소프트웨어
  • PC 또는 기타 장비에서의 이식성이 높음

리눅스의 종류

 

계열 종류  설명
Debian

Ubuntu · 캐노니컬에서 2004년 10월 20일에 처음 공표된 대표적인 리눅스 계열 운영체제 
· 개인용 노트북과 데스크톱에서 가장 인기가 많음 (서버 전용 운영체제도 존재)
Kail Linux · 모의 해킹 또는 Offensive 보안을 목적으로 만들어진 운영체제
· 여러 해킹 도구, 모듈이 포함되어 있음
리눅스 민트 · 자바, 플래시 웹 플러그인 등을 기본적으로 포함한 운영체제 
· 우분투에 비해 GUI의 외형적 아름다움에 상대적으로 더 집중함
TmaxOS 우리나라에서 개발한 리눅스 배포판 (실행이 어려워 현재 사용하지 않음)
Redhat
Fedora · 기업용 RHEL(Red Hat Enterprise Linux)에서 페도라 프로젝트를 후원하면서 만들어진 일반 사용자용 운영체제 
· 페도라를 바탕으로 RHEL 개발
RHEL · 레드햇에서 개발한 리눅스 배포판 
· 유료 라이선스로 판매되는 대신 레드햇 측의 기술 지원 제공 
· 개발용으로 무료 라이선스 사용이 가능
CentOS · 페도라가 RHEL의 기술 반영을 따라가지 못해 완벽에 가깝게 반영하는 것을 목적으로 만들어짐 
· K사와 N사 같은 국내 대기업에서도 활용되는 오픈 소스 운영체제
그 외 계열
Mandriva · ALT, Mazeya
· PC LinuxOS
Slacware · Vector Linux
· Frugalware
Gentoo Sabayon Linux
Arch Manjaro Linux

 

※ Debian 계열과 Redhat 계열의 패키지 관리

 

< Debian 계열 >

 

  • apt, apt-get(Advanced Packaging Tool)
  • 파일확장자 : DEB

< Redhat 계열 >

 

  • yum(Yellodog Update Modified)
  • 파일확장자 : RPM

 

리눅스 쉘의 이해

 
 

쉘(Shell)의 개요

 

< 의미 >

  • 운영체제 상에서 다양한 운영체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램
  • 사용자와 운영체제의 내부(커널) 사이의 인터페이스를 감싸는 층

 

< 분류 >

  • CLI(Command Line Interface) : 명령 줄 인터페이스
  • GUI(Graphic User Interface) : 그래픽 사용자 인터페이스

쉘의 위치

  → 쉘은 응용 프로그램과 운영체제 사이에 위치함

 

< 기능 >

  • 명령어 해석기 기능
  • 사용자와 커널 사이에서 명령을 해석해 전달
  • 프로그래밍 기능
  • 여러 명령을 사용해 반복하여 수행하는 작업을 하나의 프로그램으로 제작(쉘 스크립트)
  • 사용자 환경 설정의 기능
  • 초기화 파일 기능을 이용해 환경을 설정
  • 로그인할 때 초기화 파일이 실행되어 사용자의 초기 환경을 설정

※ 쉘 변경 명령어 : chsh


쉘(Shell)의 종류

 

분류 종류 설명
GUI
(Graphic User Interface)
MS Windows 환경 · Windows 탐색기
· 라이트스탭 
· 지오쉘
· BB4Win
· 이미지 데스크톱
Apple Mac OS X 환경 Finder
X-Windows 시스템 기반 환경
(주로 Unix)
 
CLI
(Command Line Interface)
Unix Shell · 본 쉘(sh) : 최초의 쉘인 톰프슨 쉘을 대체하는 실행파일로 AT&T 벨 연구소 스티븐 본이 개발
 - Almquist shell(ash)
 - Bash : 본 쉘(sh)에서 다양한 기능을 확장시킨 쉘
  
· C 쉘(csh)
 - 테넥스 C 쉘(tcsh)

· 콘 쉘(ksh), 스키마 쉘(scsh), Z 쉘(zsh)
COMMAND.COM 도스용 쉘
CMD.EXE OS/2의 텍스트 모드와 Windows NT용 쉘

주요 리눅스 쉘의 특징

 

쉘 종류 특징
sh(Bourne Shell) 1997년 개발한 유닉스 버전 7의 기본 쉘
Bash(Bourne-again shell) · GNU 프로젝트를 위해 개발하였고 sh을 기반으로 개발
· 현재 리눅스 표준 쉘이며, sh 명령어 문법과 호환
· ksh, csh의 유용한 기능을 참고하여 명령어 히스토리, 명령어 완성 기능, 히스토리 치환, 명령행 편집 등을 지원
csh(C Shell) · C언어를 기반으로 만들어졌으며, 강력한 프로그램 작성 기능 지원
· 히스토리 기능, 별명(alias) 기능, 작업 제어 등의 유용한 기능 포함
tcsh(The Enhanced C Shell) · 테넥스(TENEX)라는 운영체제에 명령행 완성 기능과 csh와 통합하여 탄생
· csh의 기능을 강화시킨 쉘로 명령어 완성 기능, 명령행 편집 기능 등을 지원
ksh(Korn Shell) · Bash와 마찬가지로 sh를 확장해서 개발
· 작업 제어, 히스토리 기능, 별명(alias) 기능, 명령행 편집 기능, 명령행 완성 기능 등 csh의 많은 기능 추가

쉘 확인

 

  • 로그인 쉘 관련 환경 변수 : SHELL
  • 현재 설정된 쉘 확인하는 방법
$ echo $SHELL
/bin/bash

Mac OS X 환경에서 현재 설정된 쉘 확인

 

  • 변경 가능한 쉘 확인
$ chsh -l
/bin/sh
/bin/bash
...

$ cat /etc/shells
/bin/bash
/bin/csh
...

 

  • 사용자 로그인 쉘 변경 명령어 : chsh

    ※ 변경한 쉘의 적용은 다음 로그인부터 유효함

$ echo $SHELL
/bin/bash

$ chsh
Changing shell for [사용자명]
New shell [/bin/bash]: [변경할 쉘 경로]
password:
Shell changed.

$ echo $SHELL
[변경한 쉘 경로]
$ cat /etc/passwd | grep [사용자명]
[사용자명]:x:501:501::[홈디렉터리 경로]:/bin/bash

Mac OS X 환경에서 사용자 로그인 쉘 정보 확인


쉘의 입출력

 

echo

 

  • 주어진 문자열을 공백과 개행 문자 등을 포함하여 표준 출력으로 출력하는 명령어
  • 명령어 형식 : echo [옵션] [문자열]
$ echo Hello World
Hello World

$ echo Hello World\n
Hello Worldn

# 문자열에서 개행 문자(\n) 인식
$ echo -e "Hello World\n"
Hello World


# 마지막에 따라오는 개행 문자(Newline) 출력하지 않음
$ echo -n "Hello World"
Hello World $

Mac OS X 환경에서 echo 명령어 활용

echo 명령어 옵션 >

옵션 기능
-n 마지막에 따라오는 개행 문자(newline)를 출력하지 않음
-e 문자열에서 역 슬래시(\)와 조합되는 이스케이프 문자를 인용 부호("")로 묶어 인식

 

< 이스케이프 문자의 종류 >

\a 경고음 출력
\b 백스페이스
\c 마지막 개행 문자 출력 안 함
\f 폼 피드 형식(프린터에서 용지 바꿈)으로 출력
\n 개행 문자 출력
\r 캐리지 리턴 : 문자의 새 줄을 시작하는데 쓰이는 제어 문자나 그 구조
\t 수평 탭
\v 수직 탭
\\ 역 슬래시

리다이렉션

 

  • 명령어의 표준 출력값을 특정 파일에 저장하는 행위

[ '>' 와 '>>' ]

 

  • : 명령어의 표준 출력값을 파일의 첫 번째로부터 새로 입력 → Over Write - 처음/덮어쓰기

      - 명령어 형식 : [명령어] > [파일명]

 

  • >> : 명령어의 표준 출력값을 파일의 마지막에 이어서 입력 → Append - 이어쓰기

      - 명령어 형식 : [명령어] >> [파일명]

# 스크립트 작성
$ touch test.sh
$ vi test.sh	# [I]를 눌러서 Insert 모드 실행
#! /bin/sh
echo "Hello World!!" > file.txt
echo "Hi" >> file.txt
# 위와 같이 작성 후 [ESC] + :wq 입력 + [ENTER]

# 스크립트 실행 결과
$ chmod +x test.sh
$ ./test.sh
$ cat file.txt
Hello World!!
Hi

Mac OS X 환경에서 리다이렉션 활용


파이프

 

  • 명령과 명령을 연결할 때 사용  필터링 기능
  • 명령어 형식 : [명령어] | [명령어]

 

$ cat /etc/passwd | grep [사용자명]
[사용자명]:x:501:501::[홈디렉터리_경로]:/bin/bash

$ ls -al | grep file
-rw-rw-r--. 1 [사용자명] [파일생성날짜시간] file.txt

Mac OS X 환경에서 파이프 활용