셸의 기능과 종류
셸은 명령어 해석 기능, 프로그래밍 기능, 사용자 환경 설정 기능 등을 가지고 있습니다.
- 명령어 해석 기능
- 사용자와 커널 사이에서 명령을 해석하여 전달하는 해석기와 번역기 기능을 합니다.
- 로그인 셸은 /etc/passwd 파일에 사용자별로 지정
- 프롬프트 : 셸이 사용자의 명령을 기다리고 있음을 나타내는 표시
- 셸 프로그래밍 기능 (shellscript)
- 셸은 자체 내에 프로그래밍 기능이 있어 반복적으로 수행하는 작업을 하나의 프로그램으로 작성 가능 합니다.
- 셸 프로그램을 셸 스크립트
- 업무 자동화를 위한 script + crontab -> 파이썬으로 많이 대체 중
- 사용자 환경 설정 기능
- 사용자 환경을 설정할 수 있도록 초기화 파일 기능을 제공
- 초기화 파일에는 명령을 찾아오는 경로를 설정하거나, 파일과 디렉터리를 새로 생성할 때 기본 권한을 설정하거 나, 다양한 환경 변수 등을 설정
- SystemLevel (모든 시스템 환경) -> UserLevel (지속적인 유저 환경) -> SessionLevel (터미널 접속 후 끝날 때 까지)
셸의 종류
Bourne shell (본 셸)
- Unix V7에 처음 등장한 최초의 셸
- 개발자의 이름인 스티븐 본(Stephen Bourne)의 이름을 따서 본 셸이라고 합니다.
- 본 셸의 명령 이름은 sh입니다.
- 유닉스에서 가장 기본적인 셸로, 다른 많은 셸의 기반입니다. 기본적인 셸 스크립트와 명령어 실행에 사용 됩니다.
- 초기에 본 셸은 단순하고 처리 속도가 빨라서 많이 사용되었고, 지금도 시스템 관리 작업을 수행하는 많은 셸 스 크립트는 본 셸을 기반으로 하고 있습니다.
C shell (C 셸)
- 2BSD Unix에 포함되어 발표 했습니다.
- 본 셸에는 없던 에일리어스나 히스토리 같은 사용자 편의 기능을 포함 합니다.
- 셸 스크립트 작성을 위한 구문 형식이 C 언어와 같아 C 셸이라는 이름을 가지게 되었습니다.
- C 셸의 명령 이름은 csh
Korn shell (콘 셸)
- 1980년대 중반 AT&T 벨연구소의 데이비드 콘(David Korn)이 콘 셸을 개발 했습니다.
- Unix SVR 4에 포함되어 발표 했습니다.
- C 셸과 달리 본 셸과의 호환성을 유지하고 history, alias 기능 등 C 셸의 특징도 모두 제공하면서 처리 속도도 빠릅니다.
- 콘 셸의 명령 이름은 ksh
배시 셸(bash shell)
- 본 셸을 기반으로 개발된 셸로서 1988년 브레인 폭스(Brain Fox)가 개발 했습니다.
- 본 셸과 호환성을 유지하면서 C 셸, 콘 셸의 편리한 기능도 포함 합니다.
- 배시 셸의 명령 이름은 bash
- 배시 셸의 모든 버전은 GPL 라이선스에 의거하여 자유롭게 사용 가능 합니다.
- Linux의 기본 셸로 제공되고 있어 Linux 셸로도 많이 알려져 있습니다.
기본 셸 확인
본 셸, 배시 셸, 콘 셸의 기본 프롬프트: $
C 셸의 기본 프롬프트: %
기본 셸 바꾸기
chsh
- 사용자 로그인 셸을 바꿉니다.
- 바꿀 수 있는 셸의 종류는 /etc/shells 파일에 지정
로그인 셸과 서브 셸
- 프롬프트에서 다른 셸을 실행할 수 있는데 이를 서브 셸이라 합니다.
- 서브 셸은 또 다른 서브 셸을 생성할 수 있습니다.
- 서브 셸을 종료하는 명령은 ^d( +d), exit 등이 있습니다.
- 서브 셸이 종료되면 서브 셸을 실행했던 이전 셸 환경으로 복귀 합니다.
출력 리다이렉션
- > : 기존 파일의 내용을 삭제하고 새로운 결과를 저장합니다.
- >> : 기존 파일의 내용 뒤에 결과를 추가 합니다.
모니터링 log remote 전송
sar (System Activity Reporter)
- 용도 : sar는 시스템의 다양한 활동(프로세서 사용률, 메모리 사용, 네트워크 활동 등)에 대한 이력적 데이터를 수집하고 보고합니다.
- 기능 : CPU 사용률, 메모리 사용, 디스크 입출력, 네트워크 활동 등을 지정된 간격으로 보고합니다
- 분석 : sar을 사용하면 특정 시점에서 시스템 성능 문제를 진단하고, 시간에 따른 성능 변화를 분석할 수 있습니다.
sar 2 10 > server1_sar_$(date '+%Y-%m-%d').log
iostat (Input/Output Statistics)
- 용도 : iostat는 시스템의 CPU 사용률과 입출력 장치 통계를 보고합니다.
- 기능 : CPU 통계와 모든 블록 디바이스(하드 드라이브, SSD 등)의 사용률, 전송률, 대기 시간 등을 제공합니다.
- 분석 : 디스크 성능 문제를 진단하거나 입출력 병목 현상을 파악하는 데 유용합니다.
iostat 2 10 > server1_iostat_$(date '+%Y-%m-%d').log
kB_read/s, kB_wrtn/s 는 IOPS(Input/Output Operations Per Second)
kB_read, kB_wrtm 은 MBPS(Megabytes Per Second)
- IOPS (Input/Output Operations Per Second)
- 정의 : IOPS는 초당 입출력 작업의 수를 나타냅니다. 주로 하드 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 스토리지 어레이 등의 성능을 측정할 때 사용됩니다.
- 중요성 : IOPS는 랜덤 읽기/쓰기 작업에서의 스토리지 성능을 반영합니다. 높은 IOPS는 시스템이 많은 수의 작은 파일이나 데이터 블록을 빠르게 처리할 수 있음을 의미합니다.
- 활용 분야 : 데이터베이스 서버, 파일 서버, 가상화 환경 등에서 IOPS는 중요한 성능 지표입니다.
- MBPS (Megabytes Per Second)
- 정의 : MBPS는 초당 전송되는 데이터의 양(메가바이트 단위)을 나타냅니다. 이는 데이터 전송 속도나 스트리밍 속도를 측정하는 데 사용됩니다.
- 중요성 : MBPS는 주로 순차적 읽기/쓰기 작업에서의 성능을 나타냅니다. 높은 MBPS는 큰 파일이나 데이터 블록을 빠르게 처리할 수 있음을 의미합니다.
- 활용 분야 : 대용량 파일 전송, 멀티미디어 스트리밍, 백업 작업 등에서 MBPS는 중요한 성능 지표입니다.
vmstat (Virtual Memory Statistics)
- 용도: vmstat는 가상 메모리 통계, 프로세스, CPU 활동 등에 대한 정보를 실시간으로 보여줍니다.
- 기능: 프로세스 상태, 메모리 사용량, 스왑 활동, 디스크 입출력, 시스템 인터럽트, CPU 스케줄링 정보 등을 보고합니다.
- 분석: 시스템의 메모리 관리와 CPU 활동을 모니터링하고 분석하는 데 사용됩니다.
vmstat 2 10 > server1_vmstat_$(date '+%Y-%m-%d').log
예상치 않게 파일의 내용이 겹쳐 쓰이는 상황을 예방하기
set -o noclobber
모든 곳에서 덮어 쓰기를 방지한다.
set +o noclobber
덮어 쓰기 방지를 해제한다.
파일의 확장 속성(extended attributes)을 관리
- lsattr (List Attributes)
- 기능 : lsattr 명령어는 파일이나 디렉토리에 설정된 확장 속성을 보여줍니다.
- 사용 예 : lsattr filename을 실행하면, 해당 파일에 설정된 확장 속성들이 표시됩니다.
- 확장 속성 예시
- i: Immutable (변경 불가능)
- a: Append only (추가만 가능)
- S: Synchronous updates (동기식 업데이트)
- s: Secure deletion (보안 삭제)
- chattr (Change Attributes)
- 기능 : chattr 명령어는 파일이나 디렉토리의 확장 속성을 변경합니다.
- 사용 예 : chattr +i filename을 실행하면, 해당 파일은 변경할 수 없게 됩니다 (Immutable).
- 확장 속성 변경 : chattr을 사용하여 파일에 대한 다양한 행동을 설정하거나 제거할 수 있습니다.
- 활용 : 파일을 실수로 삭제하거나 변경하는 것을 방지하거나, 특정 파일에 대한 보안을 강화하는 데 사용됩니다.
alias
- 에일리어스(alias)는 우리말로 ‘별명’을 의미
- 기존의 명령을 대신하여 다른 이름(별명)을 붙일 수 있도록 하는 기능
- 긴 명령 대신 짧은 명령을 만들어 사용 가능
- 여러 명령을 연결하여 하나의 명령으로 만들 수도 있음
- 자주 사용하는 옵션을 포함하여 새로운 이름을 붙여서 사용 가능
alias pschk = 'ps -ef | grep $proc’
방화벽 관리
all deny에서 시작해서 필요한 부분을 open하는 형식으로 함 (AWS SG)
방화벽 열기
firewall-cmd --list-all # 방화벽 list
firewall-cmd --add-service=http --permanent # HTTP 서비스를 방화벽 규칙에 영구적으로 추가합니다.
firewall-cmd --add-port=80/tcp --permanent # TCP 프로토콜을 사용하는 80번 포트를 방화벽 규칙에 영구적으로 추가합니다.
firewall-cmd --reload # 변경된 방화벽 규칙을 적용하기 위해 방화벽 구성을 다시 불러옵니다.
방화벽 닫기
firewall-cmd --remove-port=80/tcp --permanent --zone=public
firewall-cmd --remove-service=httpd --permanent
firewall-cmd --reload
history, 명령 재실행하기
- history
- 사용자가 이전에 입력한 명령을 다시 불러 사용하는 것
- 명령 재실행하기 !
- !! -> 바로 직전
- !번호 -> hisotry에서 해당 번호의 명령 재실행
- !문자열 -> 히스토리에서 해당 문자열로 시작하는 마지막 명령을 재실행
프롬프트 설정
프롬프트 설정 변수 : PS1
- 프롬프트를 바꾸는 것은 환경 변수 PS1에 새로운 형태의 문자열을 저장하는 것
이스케이프 문자와 프롬프트 설정하기
- \으로 시작하는 특별한 문자가 이스케이프 문자
- \u와 같이 \으로 시작하는 이스케이프 문자는 두 글자가 아니라 한 글자로 처리
- 이스케이프 문자는 화면에 문자 그대로 출력되지 않고 셸이 문자의 의미를 해석하여 실행
환경 설정 파일
- 사용자가 로그인할 때마다 자동으로 실행되는 명령을 저장한 것이 환경 설정 파일
- 시스템 환경 설정 파일과 사용자 환경 설정 파일이 있음
- 셸마다 다른 이름의 파일을 사용
시스템 환경 설정 파일
시스템을 사용하는 전체 사용자의 공통 환경을 설정하는 파일
- /etc/profile
- 시스템 공동으로 적용되는 환경 변수를 설정합니다.
- PATH, USER,LOGNAME, HOSTNAME, HISTSIZE, MAIL
- /etc/profile.d/*.sh 실행
- /etc/bashrc
- 시스템 공동으로 적용되는 함수와 ailias를 설정합니다.
- 기본 프롬프트를 설정합니다.
- 서브 셸을 위한 명령 경로를 설정합니다.
- 서브 셸을 위한 기본 접근 권한을 설정합니다.
사용자 환경 설정 파일
각 사용자의 홈 디렉터리에 숨김 파일로 생성합니다. 사용자가 내용을 수정하고 관리 가능합니다.
- ~/.bash_profile
- 경로 추가 등 사용자가 정의하는 환경을 설정합니다.
- bashrc 파일이 있으면 실행합니다.
- 환경 변수
- ~/.bashrc
- /etc/bashrc 파일이 있으면 실행합니다.
- 사용자가 정의하는 alias, function 등을 설정합니다.
- ~/.bash_logout
- 로그아웃 시 실행할 필요가 있는 함수 등을 설정합니다.
사용자 환경 설정 파일 적용하기
. .bashrc
source .bashrc -> source /etc/bashrc
'AWS Cloud School > Linux, Network' 카테고리의 다른 글
DMZ (Demilitarized Zone)란? (1) | 2024.02.01 |
---|---|
Network 주요 기기 및 기술 설명 (0) | 2024.01.30 |
CentOS에서 보안 회선 VPN 구성 (이론) (0) | 2024.01.21 |
Linux vi shell 사용 (0) | 2024.01.20 |
Linux - (1) (0) | 2024.01.20 |