오늘 공부한 내용:
🔍 정규식(Regular Expression)과 패턴 검색
1. 정규식의 정의와 메타문자
정규식은 특정 문자열의 집합을 묘사하고, 텍스트에서 반복적으로 나타나는 패턴을 기준으로 검색하거나 조작하는 데 사용되는 텍스트 문자열입니다.
메타문자,의미,예시
^,줄의 시작,^Max (Max로 시작하는 줄)
$,줄의 마지막,v4$ (v4로 끝나는 줄)
.,새로운 라인을 제외한 오직 한 개의 글자,Ma. (Ma 뒤에 한 글자 필수)
*,바로 앞 문자가 0개 이상 반복,"Max* (Ma, Max, Maxx, ...)"
[..],괄호 안의 내용 중 임의의 한 문자,[0-9] (0부터 9 중 한 글자)
[^..],괄호 안의 내용을 제외한 한 문자,[^0-9] (숫자가 아닌 한 글자)
\ ,특수 문자를 원래의 문자 의미 그대로 해석,\. (. 자체를 의미)
X\{n\},문자 X가 n번 반복,1\{3\} (111)
2. 패턴 검색 명령어 (grep & awk)
grep (Global Regular Expression Print)
파일 전체를 검색하여 정규 표현식에 대응하는 모든 행을 출력하는 명령어입니다.
옵션,의미
-n,파일 내에서 행 번호와 함께 출력
-v,패턴이 존재하지 않는 행만 출력 (반전)
-i,대소문자를 구분하지 않음
-l,패턴이 존재하는 파일의 이름만 출력
-w,패턴을 하나의 단어로 취급하여 검색
awk
자료 처리 및 리포트 생성에 사용되는 프로그래밍 언어입니다. 파일을 행 단위로 조사하며, 필드(Field) 단위로 작업을 수행합니다.
기본 형식: awk 'pattern {action}' filename
필드 변수:
$0: 라인 전체
$1, $2, ...: 첫 번째, 두 번째 필드
-F 옵션: 필드 구분자 지정 (예: awk -F : ...)
내장 변수:
NR (Number of Record): 현재 처리 중인 레코드(행) 번호
NF (Number of Field): 현재 레코드의 필드 개수
매칭 연산자:
~: Match 연산자 (필드 내에서 패턴 일치 여부 검사)
!~: Not Match 연산자
🔄 프로세스 조사 및 관리 (Process Management)
1. 프로세스의 종류
종류,특징
대화형 프로세스,터미널과 정보를 주고받으며 **포그라운드(Foreground)**로 실행
배치 프로세스,"특정 시각에 몰아서 실행되며 터미널 I/O 교류가 없음 (at, batch 명령어 사용)"
데몬 프로세스,특정 서비스를 위해 백그라운드 상태에서 계속 실행되는 서버 프로세스
좀비 프로세스,모든 자원은 해제했지만 프로세스 테이블만 유지하고 있는 상태
2. 프로세스 제어 및 조사 명령어
&: 명령 뒤에 붙여 **백그라운드(Background)**로 실행
jobs: 백그라운드 또는 중지된 프로세스 목록 출력
fg: 백그라운드 프로세스를 포그라운드로 전환
bg: 중지된 포그라운드 프로세스 (Ctrl + Z로 중지)를 백그라운드로 전환
ps: 현재 동작 중인 프로세스의 스냅샷 출력
옵션: -a (전체 사용자), -u (사용자 정보 포함), -x (제어 터미널 없는 프로세스 포함)
STAT 필드: 프로세스 상태 코드 (R: 실행 중, S: 대기 중, Z: 좀비)
pstree: 프로세스 상황을 트리 형식으로 보여줌 (-p: PID와 함께 출력)
3. 시그널(SIGNAL) 및 종료 명령어
시그널은 프로세스에게 발생하는 비동기적인 이벤트입니다.
시그널 (번호),의미,종료 명령어
SIGHUP (1),"로그아웃, 설정 파일 다시 읽기 (Daemon restart)",kill -HUP PID
SIGINT (2),키보드에 의한 실행 중지 (Ctrl + C),kill -2 PID
SIGTERM (15),안전한 실행 종료 (기본값),kill PID
SIGKILL (9),"강제 종료 (emergency kill, 프로세스가 무시할 수 없음)",kill -9 PID
SIGSTOP (19),실행 정지 (Ctrl + Z),kill -19 PID
kill: PID에게 지정된 시그널을 보냅니다.
killall: 프로세스명 또는 데몬명으로 모든 프로세스에게 시그널을 보냅니다.
💾 파일 시스템 관리
1. 파일 시스템 구조 및 파티션
파일 시스템: 파일과 데이터를 저장하고 찾기 쉽도록 유지 관리하는 방법 및 체계입니다.
파티션: 하나의 물리적 디스크를 여러 개의 논리적 디스크로 분할하는 것.
MBR (Master Boot Record): 레거시 파티션 방식으로 Primary(최대 4개), Extended, Logical Partition으로 나뉩니다.
GPT (GUID Partition Table): 최신 방식으로, 128개 파티션을 지원하며 파티션 정보를 주복사본과 백업 복사본으로 저장하여 안정성이 높습니다.
구성 요소: Boot Block, Super Block, Inode Block (메타 데이터), Data Block
2. 리눅스 파일 시스템 종류
파일 시스템,특징
EXT2/3/4,리눅스 기본 계열. EXT4는 대용량 파일 지원 및 Ubuntu 기본 파일 시스템.
XFS,대용량 파일 및 볼륨 처리에 특화된 고성능 저널링 파일 시스템 (Red Hat 계열 기본 채택). inode가 동적 할당됨.
3. 마운트(Mount) 및 Inode
mount: 파일 시스템 구조 내의 파일들을 사용자가 이용할 수 있도록 특정 디렉터리(Mount Point)에 논리적으로 연결하는 작업.
/etc/fstab 파일에 설정하면 부팅 시 자동 마운트됩니다.
umount: 장치 연결 해제.
UUID: 범용 고유 식별자로, 디스크 이름 변경에 관계없이 안정적인 마운트를 위해 사용됩니다.
Inode (Index Node): 파일의 이름을 제외한 파일의 모든 정보(소유권, 물리적 주소, 링크 수, 크기, 시간 등)를 가진 메타 데이터.
링크 파일과 Inode
구분,하드 링크 (Hard Link) (ln),심볼릭 링크 (Symbolic Link) (ln -s)
Inode,원본 파일과 동일한 Inode를 사용 (링크 수 증가),새로운 Inode를 생성하고 원본 파일을 연결
특징,원본 삭제해도 데이터 유지. 다른 파티션 링크 불가.,원본 삭제 시 링크 끊김 (데드 링크). 다른 파티션 링크 가능.