[F-Lab 챌린지 65일차 TIL]

성수데브리·2023년 8월 31일
0

f-lab_java

목록 보기
54/73

리눅스 명령어

nohup java -jar $DEPLOY_JAR >> $BASE_PATH/deploy.log 2>$BASE_PATH/deploy_err.log &

nohub

  • no hang up : 끊지마
  • 리눅스, 유닉스에서 쉘스크립트파일 (*.sh)을 데몬형태로 실행시키는 프로그램
    터미널 세션이 끊겨도 실행을 멈추지 않고 동작하도록 함
  • 세션과 연결을 종료해도 nohup 으로 돌린 프로세스는 데몬 형태로 실행되게 되어 종료되지 않고 계속 실행된다.
  • nohup 으로 실행시킨 파일은 반드시 755 퍼미션을 가지고 있어야 한다.

>, >>

  • > : 명령어 뒤에 나오는 파일에 쓸 때 사용한다. (write, overwrite)
  • >> : 명령어 뒤에 나오는 파일에 추가할 때 사용한다. (append)

&

  • 프로그램 실행시에 명령어 맨 끝에 붙여주면 해당 프로그램이 백그라운드로 실행된다.

then
  echo ">>> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다." >> $BASE_PATH/deploy.log
else
  echo ">>> kill -15 $CURRENT_PID"

인터럽트 처리 과정

  1. 실행중인 프로세스에 인터럽트가 발생하면 CPU는 해당 인터럽트를 처리할 지 말지 결정한다.
  2. 인터럽트를 받아들이면 CPU 는 현재까지 실행 문맥을 저장한다.
  3. 인터럽트 서비스 루틴(인터럽트 핸들러)를 실행해 해당 인터럽트를 어떻게 처리하고 작동해야할지 정보가 담긴 프로그램을 실행한다.

kill

  • kill 은 프로세스 시그널에 보내는 명령어로 signal 을 받은 프로세스의 기본 동작은 종료기 때문에 kill 이라고 명명되었다.
  • signal 이란 프로세스 소프트웨어 인터럽트의 일종으로 어떤 이벤트가 발생했음을 프로세스에게 알려주는 매커니즘이다.
  • signal 의 종류가 많다.
    • kill [시그널 번호값] 으로 프로세스에 시그널을 보낼 수 있다.
$ kill -l

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
  • signal handler란 시그널이 발생했을 때 실행되는 함수를 등록하는 것이다.
    • 시그널 핸들러를 등록하지 않으면 기본 정의된 액션을 실행한다.
      action 명기본 동작
      TERM시그널을 수신한 프로세스 종료
      IGN시그널 무시
      CORE시그널을 수신한 프로세스를 종료하면서 코어 덤프(core dump) 파일 생성
      STOP시그널을 수신한 프로세스 정지
      CONT중지된 프로세스 재시작

프로세스에 시그널을 보내는 명령어가 kill 인 이유는 크게 다음 2가지때문입니다.

  1. 시그널 종류를 명시하지 않고 kill 명령어를 호출할 경우 전송되는 기본 시그널은 TERM signal
    1. 프로세스는 SIGKILL(9)과 SIGSTOP(19)에 대한 처리를 할 수 없도록 되어있습니다.
  2. signal handler 를 작성하지 않았을 경우 대부분의 기본 액션은 해당 프로세스 종료

kill -9 / kill SIGKILL

  • 프로세스를 강제 종료한다.
  • 종료 함수가 호출되지 않고 즉시 프로세스가 종료되어 버리므로 데이타가 유실되거나 리소스가 제대로 안 닫히는 큰 문제가 발생할 수 있습니다.

kill -15 / kill SIGTERM

  • kill -9 와 다르게 정상종료한다. 종료에 대한 부가적인 작업을 수행하고 안전하게 종료할 수 있다.
  • kill 명령어는 디폴트가 -15 옵션이기 때문에 옵션을 주지 않아도 SIGTERM 시그널이 발생한다.

MySQL Buffer Pool 복습

  • 버퍼풀
💡 버퍼, 버퍼풀은 어떤 용어일까?
버퍼풀의 역할 - 쓰기지연, 캐싱
체크포인트와 동기화
  • Buffer Pool 은 InnoDB 가 테이블과 인덱스 데이터를 캐싱해두는 메인 메모리의 한 공간이다.
  • 버퍼풀의 역할은 캐싱과 쓰기 지연이 있다.
    - 캐싱 : 자주 조회되는 데이터를 메모리로 읽어들여 파일 시스템 접근없이 바로 메모리에서 데이터를 제공해 속도를 높일 수 있다.
    - 쓰기 지연 : 쓰기 작업 데이터를 바로 바로 파일 시스템에 반영하지 않고 특정 시점에 flush 한다.
  • 물리 메모리의 80%까지 버퍼 풀에 할당할 수 있다.
  • 자주 조회되는 데이터만 메모리에 상주할 수 있게 Buffer Pool 은 LRU 알고리즘을 사용한다. [공식문서]
  • 체크포인트란?
    - 체크포인트란 엔진이 예기치 않은 종료 또는 충돌 후 복구과정에서 로그에 포함된 변경 내용의 적용을 시작할 수 있는 알려진 올바른 지점을 만드는 것을 의미한다.
    - 체크포인트가 생기는 과정은 Buffer Pool 페이지가 수정된 경우(dirty page) 변경된 Page를 디스크로 flush 된다. Buffer Pool 과 디스크가 동기화 되는 것이다.
    - InnoDB 체크포인트는 Sharp Checkpiont 와 Fuzzy Checkpoint 두 가지 방식으로 분류된다. [상세설명 블로그]

0개의 댓글