본문 바로가기
GOORM

GOORM: Kubernetes-10

by hxunz 2021. 11. 5.
  1. Facts (사실, 객관)
    프로세스와 아카이브에 대해 배우고 실습을 진행하였다. 임의로 정해진 팀원들이랑 코딩테스트 준비를 같이 해보기로 하였다.
     
  2. Feelings (느낌, 주관)
    : 어제 배운것들이 잘 이해되지 않은채로 넘어가니 오늘도 거의 이어지는 듯한 내용들을 배웠는데 실습을 따라가기에 벅찼다. 배운 명령어들을 예시 문제들을 통해서 다시 실습을 해보고 싶다는 생각이 들었다. 하루종일 앉아서 필기 + 타이핑을 치다 보니까 어깨가 너무 결린다,,, 바른자세 유지하려고 하는데 점점 더 거북이가 되어가고,,,

  3. Findings (배운 점)
    : Process
     
     - 컴퓨터의 CPU에서 실행되는 모든 프로그램

    Multitasking
     - 시스템은 기본적으로 하나의 CPU를 가지고 있으며 그것을 최적화하기 위해 time-sharing 기법을 이용

    프로세스 생성
     - PID : 프로세스가 시작될 때 부여되는 고유한 ID 넘버
     - PPID : 부모 프로세스의 PID 값

    프로세스 종류
    부모 프로세스 자식 프로세스를 탄생시킨 프로세스
    fork 후 자식 프로세스의 동작 완료까지 대기
    자식 프로세스 부모 프로세스 포크 함수를 통해서 일부 정보를 상속 받아서 탄생하는 프로세스
    작업 완료 후 부모 프로세스에 신호 전달 후 종료
    고아 프로세스 부모 프로세스가 kille됐지만 자식 프로세스가 살아남는 경우 
    좀비 프로세스 시스템 상에서 프로세스를 kill했지만 살아있어서 리소스들을 장악하고 있는 경우
    데몬 프로세스 사용자가 아닌 시스템에서 실행된 프로세스
    ex) 백신 프로그램, 백그라운드로 돌아가는 프로그램 등
    대화형 프로세스 터미널과 세션을 통하여 사용자와 정보를 주고받으며 실행하는 프로세스
    제어 또는 작업 제어는 프로세스를 포그라운드나 백그라운드로 전환하는 역할을 하고 포그라운드에서 실행을 계속 할 수 있도록 제어한다.
    배치 프로세스 일련의 작업을 몰아서 특정 시각에 실행 시키는 것이며 일반적으로 터미널과의 입/출력 교류가 전혀 없다
    batch 명령어와 at 명령어를 사용한다

    각 프로세스의 기본 규칙
     : 각각의 프로세스마다 고유 번호의 프로세스 ID(PID)를 하나씩 증가시키면서 부여한다. 더이상 할당할 PID가 없으면 사용되지 않는 
       가장 낮은 숫자로 되돌아가 다시 할당한다.
       프로세스는 파일의 소유권과 유사한 방식의 소유권을 갖는다.
       프로세스를 실행하는 사용자의 UID가 프로세스의 실제 사용자 UID로 할당된다.
       setUID와 같은 특수한 경우 실행하는 사용자의 UID가 아닌 파일의 소유자가 실행한것처럼 실행된다

    부모프로세스 , 자식프로세스
     - exec : 한 프로세스가 다른 프로세스를 생성할 경우 원래의 프로세스가 더는 남아있을 필요가 없다면 exec 호출을 통해서 다른 프로그램을 실행하고 새로운 프로세스로 자신을 대체할 수 있다.
     - fork : exec에 반해 원래 프로세스가 계속 존재해야 한다면 fork를 호출하여 자신의 복사본 프로세스를 먼저 만들고 복사본 프로세스에서 다시 exec를 호출하여 다른 프로그램을 실행하는 새로운 프로세스로 자신을 대체한다

    at / batch를 이용한 배치 프로세싱
     - /bin/sh를 이용하여 지정된 시점에 실행할 명령을 표준 입력이나 지정한 파일에서 읽어들인다
    명령 의미
    at 지정한 시간에 수행할 명령어 설정 및 파일 지정
    atq 현재 사용자의 등록된 작업 목록을 출력하며 관리자의 경우 모든 사용자의 작업 목록을 보여준다
    출력 형식은 작업번호, 날짜, 시간, 작업구분 (at, batch)
    atm 지정된 작업 번호에 해당하는 작업을 삭제한다
    batch 시스템 부하 수준이 낮을 때 명령을 수행한다
    부하 평균이 0.8 이하 도는 atrun으로 지정한 값 이하로 내려갔을 때 수행한다

    ps
     - 현재 동작하고 있는 프로세스들의 상황을 보여줌
     - ps 명령어 주요 옵션
    옵션 의미
    a 현재 실행중인 전체 사용자의 모든 프로세스 출력
    e 모든 프로세스 정보 출력
    l Long Format
    u 프로세스를 실행한 사용자 정보와 프로세스 시작 시간등을 출력
    x 제어 터미널을 갖지 않는 프로세스 출력
    f Full format 정보
     - ps 명령어 주요 필드
    필드 의미
    USER 프로세스를 실행시킨 사용자
    PID 프로세스 ID
    %CPU 최근 1분간 프로세스가 사용한 CPU 시간 백분율
    %MEM 최근 1분간 프로세스가 사용한 실제 메모리의 백분율
    RSS 현재 프로세스가 사용하고 있는 실제 메모리 크기
    TTY 프로세스를 제어하고 있는 터미널
    STAT 프로세스 상태 코드
    START 프로세스의 시작 시간
     - STAT 필드 구성 요소
    속성 의미
    R 실행 중 혹은 실행 할 수 있는 상태
    S 수면 상태
    I 휴식 상태
    T 정지 상태
    W 스왑 아웃된 상태
    P 페이지 대기
    D 디스크 대기
    N nice로 실행 우선순위가 낮아진 상태

    pstree
    옵션 의미
    -n PID 순으로 정렬
    -p 프로세스명과 PID 함께 출력

    sleep
     - 일정 시간 동안 프롬프트를 정지시키는 명령어

    Foreground Process
     - 쉘 상태에서 명령을 내리면 사용자는 해당 프로세스가 종료될 때까지 기다려야 함

    Background Process
     - 일반적으로 명령뒤어 &을 붙여서 동작시키며 명령을 내린 사용자는 자신이 하고자 하는 다른 명령어를 계속 실행 할 수 있음
     - PID 값 출력 후 다시 프롬프트 표시

    jobs
     - 백그라운드로 실행중인 프로세스나 현재 중지된 프로세스 목록을 출력

    fg
     - jobs 명령어를 통해 확인된 작업번호의 프로세스를 포그라운드 환경으로 전환
     - fg %작업번호

    ps
     - 실행시키고 있는 foreground process에서 ctrl+z 키를 눌러 작업을 잠시 중지시킨 후에 bg 명령어를 사용하여 작업을 백그라운드로 전환함
     - bg %작업번호

    SIGNAL
     - 프로세스에게 발생하는 비동기적인 사건
     - 발생하는 경우 : ctrl + C(SIGINT), ctrl + Z(SIGSTOP) / 다른 프로세스에 의해서 발생 / 커널 내부에서 발생

    kill
     - 프로세스나 프로세스 그룹에게 지정된 시그널을 보내줌
    시그널 의미
    SIGHUP(HUP) <1> 로그아웃, 설정 파일 다시 읽기
    SIGINT(INT) <2> 키보드에 의한 실행 중지, ctrl + C
    SIGKILL(KILL) <9> 강제 종료
    SIGTERM(TERM) <15> 실행종료
    SIGSTOP(STOP) <19> 실행정지, ctrl + Z
     - kill %작업번호

    killall
     - 프로세스명 또는 데몬명으로 프로세스 종료시킴

    skill
     - 주로 시스템에 접속해 있는 사용자 혹은 특정 터미널을 종료 시키는데 사용됨

    프로세스 제어 관련 명령어
    명령어 기능 및 특징
    pgrep 프로세스에 대해 특정 정보를 이용한 검색 기능
    ps + grep 과 같은 효과
    pkill killall과 같이 복수의 프로세스에 신호전달 가능
    +pgrep 과 같은 특정 조건으로 신호 전달 가능
    여러 프로세스 동시 제어 가능하나 예상치 못한 프로세스 제어

    nice 값
     - 높을수록 우선순위 하락
     - 프로세스 실행 시 설정 : nice 명령어 사용, nice -n 우선순위값 명령어
     - 동작 중 변경 : renice 명령어 사용, renice -n nice값 pid
      root 사용자 일반 사용자
    최초 부여 가능 값 -20 ~ 19 1 ~ 19
    조정 가능한 값 모든 값 가능 기본의 값보다 큰 값

    파일 아카이브
     - 리눅스에서 자주 사용되는 파일 묶음 및 압축 도구들
    형식 파일명
    tar 파일명.tar
    gzip & gunzip 파일명.tar.gz
    bzip2 & bunzip2 파일명.tar.bz2
    xz & unxz 파일명.tar.xz
     - 아카이브 생성 : tar -cvf [이름] [대상파일]
     - 아카이브 추출 : tar -xvf [대상tar]
     - 압축 : gzip -> tar -cvzf [이름] [대상파일]
                 bzip2 -> tar -cvjf [이름] [대상파일]
                 xz -> tar -cvJf [이름] [대상파일]

    tar의 주요 옵션
    옵션 의미
    c(create) 새로운 묶음을 생성
    x(extract) 묶인 파일을 풀어줌
    t(list) 묶음을 풀기 전에 목록을 보여줌
    f(file) 묶음 파일명을 지정해줌
    v(visual) 파일이 묶이거나 풀리는 과정을 보여줌
    z tar + gzip
    j tar + bzip2
    J Tar +xz


'GOORM' 카테고리의 다른 글

GOORM: Kubernetes-12  (0) 2021.11.09
GOORM: Kubernetes-11  (0) 2021.11.08
GOORM: Kubernetes-9  (0) 2021.11.05
GOORM: Kubernetes-8  (0) 2021.11.04
GOORM: Kubernetes-7  (0) 2021.11.04

댓글