실행중인 프로세스가 갑자기 죽으며 Core 파일이 생성

Core 파일이 계속 생성되는 경우 Disk Full로 장애 발생

Core 파일 분석 후 이슈를 해소하여 시스템 안정성 확보 

Core 파일 생성을 위한 설정

1. ulimit -c unlimited
2. ulimit -a 로 확인
- 'core file size          (blocks, -c) unlimited' 면 설정 완료
- 만약 core file의 size를 제한하고 싶다면 'unlimited'가 아닌 kb단위의 size를 지정해주면 된다.

분석 방법

1. debug 대상 파일 확인

프로그램이 여러개가 돌고 있는 환경이라면 특정 dump가 어떤 프로그램이 만든것인지 확인 필요

file [core dump file]

* /proc/sys/kernel/core_pattern 에서 정의된 형태로 생성

   %p : pid

   %u : uid

   %g : gid

   %s : signal number

   %t : dump time(unix)

   %h : hostname

   %e : process

 

2. debugging

gdb [core발생 프로그램] [core file]

이후, gdb interface로 화면이 전환되면서 core에 관한 간략한 정보가 뜬다.
그리고 다음의 command를 입력하면 상세한 정보를 확인하는데 도움을 준다.

- bt(back trace) : core 발생 직전의 call stack 확인
- bt full : 전체 call stack 확인
- f[스택프레임 번호] : 특정 stack 확인
- list : stack의 code 보기
- info local : stack의 수행 당시 변수 값 확인
- info arg : stack의 argument 확인
- where : 간략화


의심되는 stack frame 분석

 info frame : 보다 상세한 정보 제공

 stack frame at 0x : 해당 함수 sp

 called by frame at 0x : 해당 함수를 호출한 함수의 SP(ex. main)

 Arglist at 0x : 해당 함수가 호출하는 함수의 bp

 args : 인자 정보

 saved registers : rip, ebp..

   (EX) (gdb) f [frame num] + (gdb) info frame

         (gdb) info frame [frame num]

 

해당 stack의 argument/local value 확인

 info frame 보다 간결하지만 인간친화적

 

  (EX) (gdb) info arg

        (gdb) info local

 

3. process debugging

gdb [프로세스명] [pid]

실행중인 프로세스를 gdb로 붙어서 확인

 

참고

https://incredible-larva.tistory.com/entry/core-dump-%EB%B6%84%EC%84%9D%EC%9D%84-%EC%9C%84%ED%95%9C-gdb-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=hymne&logNo=221841282483 

현재 위치에서 디렉토리 즉 폴더 개수 세기

 ls -l | grep ^d | wc -l


현재 위치에서 파일의 개수 세기

ls -l | grep ^- | wc -l

 

현재 디렉토리의 하위 파일 개수 세기

find . -type f | wc -l


출처: https://lee-mandu.tistory.com/420 [개발/일상_Mr.lee]

Linux chkconfig

chkconfig는 리눅스서버가 부팅될 때 실행될 프로그램을 설정하는 역활

서버 부팅시 프로그램 리스트와 런레벨별 실행여부 등을 확인하거나 설정

런레벨

레벨 상세 정보
0 종료
1 단일 사용자 모드
2 사용하지 않음
3 다중 사용자 모드 (CUI) - 터미널
4 사용하지 않음
5 다중 사용자 모드 (GUI) - X윈도우
6 재부팅

명령어

// 리스트 확인
  chkconfig --list [프로그램명]

// Linux 시작시 실행되도록 설정
  chkconfig [프로그램명] on

// Linux 시작시 실행되지 않도록 설정
  chkconfig [프로그램명] off

// Linux 런 레벨별로 시작시 실행되도록 설정
  chkconfig --level [레벨] [프로그램명] on

// Linux 런 레벨별로 시작시 실행되지 않도록 설정
  chkconfig --level [레벨] [프로그램명] off

참고

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=diceworld&logNo=220295874000

lsof ? 

- List Open Files 명령어로, 열려진 파일들을 보는 명령어

- 시스템에서 동작하고 있는 모든 프로세스에 의해서 열려진 파일들에 대한 정보를 보여주는 시스템 관리 명령어

 

사용법 참고 : https://blog.cafe24.com/1989

 

삭제파일 복원 방법

DB 혹은 Process에서 사용중에 삭제되어 (deleted) 상태로 남아있는 파일을 복사하여 복원

복원 예제

lsof 명령어로 deleted 및 복원 파일명이 포함된 파일을 조회

pid 번호 확인 : 두번째 항목 ( 예제는 6505 )

삭제중 임시로 유지중인 object 위치 확인

위치 : /proc/[PID]/fd/[object 번호]

붉은색 번호가 처리중 삭제되어 링크가 깨진 object

삭제중 임시로 유지중인 object 번호 확인 ( 예제는 1489 )

위치 : /proc/[PID]/fd/[object 번호]

object 번호를 이용하여 복원

cp [object 번호] 복원 위치


to Top