Day 8-리눅스 프로세스 및 RPM&YUM

2019. 11. 27. 10:04Security/리눅스

* 리눅스의 파일 시스템과 파티션

UUID

- 매체나 장치에 붙어있는 고유 이름으로 디스크의 위치가 바뀌어도 유지.

- UUID를 이용해서도 마운트와 언마운트가 가능.

 

xfs_admin

- 파티션의 파라미터를 변경하거나 확인할수 있지만 사용하는 것은 추천되지 않음.(중요도 낮음)

 

findfs

- UUID나 라벨명으로 장치명 확인(중요도 낮음)

 

자동 마운트(/etc/fstab)

- /etc/fstab 파일은 시스템 시작 시 자동으로 마운트할 파일 시스템의 목록이나 옵션을 저장.

- 가상 드라이브를 부팅시마다 마운트 해주고 싶다면 /etc/fstab에 명령어를 쳐주면 되지만 오타등의 실수가 있을 경우 부팅이 되지 않으므로 rc.local 파일에 마운트 명령어를 추가해주는 것이 안전. 

- 형식

  ->mount -a : fstab의 모든 목록을 마운트

- [장치, 마운트 위치, 파일 시스템 타입, 옵션, dump, 점검여부]의 6가지의 항목으로 구성.

- 장치 항목은 UUID가 출력될 수도 있고 라벨명이 출력될 수도 있다.

 

SWAP

- 리눅스의 메모리 관리 기술 중 하나. 메모리가 부족할 경우 보조기억장치를 메모리 대용으로 사용.

- 윈도우의 가상 메모리와 유사한 기술이며 일반적으로 스왑 공간 추가는 스왑 파티션을 이용하며 메모리의 2배로 잡는게 일반적이다.

- /etc/fstab에 등록해서 사용.

- mkswap -c [장치명]

  -> 장치명의 스왑 파티션 포맷

swapon [장치명]

  -> 장치명의 스왑 파티션 활성화

swapon -s

  -> 현재 swap 상태 확인

swapoff [장치명]

  -> 장치명의 스왑 파티션 비활성화

free : 메모리 구조를 확인하는 명령어

swapon -s : 현재 swap 상태를 확인

mkswap -c /dev/sdb1 : /dev/sdb1의 스왑 파티션 포맷

swapon /dev/sdb1 : /dev/sdb1의 스왑파티션 활성화

 

* 프로세스

- 시스템에서 실행 중인(메모리를 점유중인) 프로그램.

- 프로세스가 할당 받은 메모리 영역을 프로텍션 도메인이라고 한다.

- 프로세스는 pid에 의해 구별

- 프로세스는 트리구조를 이루며 최상위 프로세스는 init이다.

- 프로세스는 ppid로 구별되는 상위(부모 프로세스)를 갖는다.

 

job

- job은 현재 터미널에서 실행한 프로세스로 shell에 의해서 job 번호가 부여.

 

foreground

- 실행되고 있으면서 현재 입출력하고있는 프로세스.

- 터미널의 입출력은 foreground 프로세스를 위해서 대기.

 

background

- 실행되고 있지만 현재 입출력하고 있지 않은 프로그램.

ex) daemon 프로세스

 

ps : 프로세스를 확인. 보통 -ef를 같이 사용.

-a : 현재 터미널에서 실행중인 프로세스

-e : 전체 프로세스

-f : 자세한 내용.

-u : 실행 계정, 시작 시간 포함한 정보 검색

UID : 프로세스 실행 계정

PID : pid

PPID : 부모 프로세스 pid

C : idle time(유휴 시간)

STIME : start time. 프로세스가 시작된 시간

TTY : 터미널. 프로세스가 연결된 제어 터미널

TIME : CPU 사용시간

CMD : 실행 명령

 

kill

- 프로세스를 강제 종료.

- signal을 지정하고 미리 정의된 signal에 미리 정의된 프로세스에 대한 종료 작업을 수행

- 형식 : kill [시그널] [PID]

  -> -l : signal 목록(9: 프로세스 강제 종료)

 

nohup

- 터미널은 죽어도 프로그램은 계속해서 실행되게 하고싶을때 사용.

- 로그아웃 이후에도 명령은 계속 실행 되지만 background로 돌리는 것은 아니다.

- 형식 : nohup [commnad]

 

* RPM

Redhat 사에서 제공하는 리눅스용 프로그램을 배포하는 기술. 단, 의존성 문제로 설치하기 힘든 경우가 있다.

 

RPM 패키지의 구조

- 패키지명-버전-릴리즈.아키텍처.rpm

  -> rpm -qa : 시스템에 설치된 모든 패키지명

  -> rpm -qi [패키지명] : 패키지의 상세한 정보

  -> rpm -ql [패키지명] : 패키지의 파일 리스트

  -> rpm -qf 파일명 : 지정한 파일이 포함된 패키지

 

rpm [-ivh | -Uvh | -Fvh] [패키지명] : 설치 및 업그레이드

-i : 설치

-U : 업그레이드(미설치된 파일은 설치)

-F : 업그레이드만

-v : 설치과정 출력

-h : 설치정도 출력(#)

 

rpm -e [패키지명] : 지정한 패키지를 삭제

--nodeps : 의존성 무시

--force : 같은 버전의 패키지나 파일이 있어도 무시

--oldpackage : 다운그레이드

 

* YUM(Yellowdog Updater Modified)

- RPM의 고질적인 문제인 의존성을 해소하기 위한 패키지 기술로 RPM과 동일한 형식의 설치 구조 지원.

- repository(저장소)를 이용하는 기술로 인터넷으로 지원되는 모든 프로그램을 설치, 관리할 수 있다.

 

조회

yum list : 설치가능한 패키지를 확인한다.

yum list [패키지명] : [패키지명]이 설치되어있는지 아닌지 확인한다.

yum repolist : 시스템에 등록된 repository list 출력

yum search [문자열] : 패키지명이나 description에 문자열이 포함된 패키지들을 출력

yum provides [경로/문자열] : 문자열이 포함된 파일이 소속된 패키지들을 출력

 

yum install -y [패키지명] : 패키지를 repository로부터 설치.

 

yum update -y [패키지명] : 패키지를 repository로부터 업데이트.

 

yum remove [패키지명] : 지정한 패키지를 삭제.

 

[실습]리눅스에서 ftp 클라이언트 설치.

yum install -y ftp

  -> ftp 클라이언트 설치. 성공적으로 설치됐다면 Complete가 뜬다.

yum list ftp

  -> 정상적으로 설치가 됐다면 Installed Packages라고 뜬다.(미설치시 available Packages)

 

* 개념 및 용어 정리

MBR

- 최상위 파티션의 첫 번째 섹터에 포함되어있는 부팅 정보를 호출 시도 하는 것.

- MBR이 존재하지 않는다면 부팅 에러가 발생

 

터미널

- 모니터라 키보드로 사용하기 위한 각각의 최종 단말기