Linux Core를 덤프 위치로 설정

Linux Coreleul Deompeu Wichilo Seoljeong



Linux에서 '코어 덤프'란 무엇입니까?

프로세스가 예기치 않게 종료되면 시스템에 '코어 덤프'가 자주 남습니다. 여기에 포함된 관련 메시지가 있습니다. 코어는 디버깅 도구의 역할을 하며 디버깅 정보도 포함하는 메모리의 이미지입니다. 프로그램을 디버깅하고 싶지 않은 사용자라면 코어를 삭제하면 됩니다.

$ rm 핵심

새 코어가 덤프되면 이전 코어를 덮어쓰므로 그대로 둘 수도 있습니다. 다음 명령을 사용하여 코어 덤프를 비활성화할 수도 있습니다.







$ 감소하다 -씨 0

필요에 따라 코어 덤프를 생성하거나(예: 디버거를 통해) 종료 시 자동으로 생성할 수 있습니다. 커널은 프로그램이 갑자기 종료되면 코어 덤프를 시작합니다. 추가 작업을 위해 다른 프로그램(예: systemd-coredump)으로 보낼 수 있습니다.



일반적으로 그렇듯이 더 나은 안정성과 문제 해결을 위한 데이터 수집과 디버그 데이터에서 민감한 정보가 노출될 위험 사이에는 절충안이 있습니다.



우리는 무엇을 다룰 것인가?

이 기사에서는 Ubuntu 20.04 OS에서 코어 덤프 위치를 설정하는 방법을 살펴봅니다. 지금 시작해 봅시다.





코어 덤프 생성

먼저 코어 덤프를 생성하는 방법을 살펴보겠습니다. 이를 위해 Linux kill 명령을 사용합니다. 먼저 프로세스의 PID를 찾은 다음 종료 신호를 보냅니다. 예를 들어, 절전 프로세스를 시작한 다음 해당 PID로 종료합니다.

$ 500

$ 죽이다 -에스 시그트랩 $ ( 꽉 붙잡음 )



이제 코어 덤프를 생성하는 방법을 배웠으므로 다음 섹션에서 사용할 수 있습니다.

그들은 어디로 가는가?

코어 덤프 파일의 이름은 기본적으로 core.pid이며 애플리케이션의 작업 디렉토리에 생성됩니다. 여기서 pid는 프로세스 ID입니다.

ulimit 도구를 사용하면 현재 셸과 그 이후의 셸에 대한 시스템 리소스 제한을 가져오거나 변경할 수 있습니다. 코어 파일 크기 제한을 확인하거나 구성하려면 다음 명령을 사용하십시오.

$ 감소하다 -씨

코어 파일을 구분하거나 자르지 않으려면 제한이 전체적으로 '무제한'으로 설정되어 있는지 확인하십시오[1]. 이것은 다음 행을 추가하여 /etc/security/limits.conf에서 수행할 수 있습니다.

루트 - 코어 무제한

* - 코어 무제한

이제 로그아웃했다가 다시 로그인하면 세션에 제한이 적용됩니다.

코어 덤프 위치 사용자 지정

'sysctl kernel.core_pattern' 명령 또는 '/proc/sys/kernel/core_pattern'은 일반적으로 코어 덤프 위치를 설정하는 데 사용됩니다.

현재 코어 패턴에 대한 설정을 보려면 다음 명령을 입력하십시오.

$ 고양이 / 절차 / 시스템 / 핵심 / core_pattern

일반적으로 여기에서 'core'로 나열된 기본값을 찾을 수 있습니다.

'/proc/sys/kernel/core_pattern'을 사용하여 코어 덤프 위치 설정

'/proc/sys/kernel/core_pattern' 파일[2] [3]을 사용하여 일시적으로 코어 덤프를 새 위치, 예를 들어 /tmp/dumps/core로 리디렉션하겠습니다. 이제 다음 단계를 따르십시오.

1 단계 . 먼저 코어 덤프를 저장할 디렉토리를 만듭니다.

$ mkdir -피 / 시간 / 덤프 / 코어 /

2 단계 . 이 디렉터리에 필요한 권한을 부여합니다.

$ chmod a+x / 시간 / 덤프 / 코어 /

3단계 . 이제 임시로 코어 덤프 경로를 설정합니다.

$ 에코 '/tmp/덤프/코어/코어' | 스도 / 절차 / 시스템 / 핵심 / core_pattern

다시 말하지만 전역적으로 ulimit를 무제한으로 설정합니다.

여기에서 다음과 같이 파일 이름에 다른 정보를 추가할 수 있습니다.

$ 에코 '/tmp/dump/cores/core_%e.%p_%t' | 스도 / 절차 / 시스템 / 핵심 / core_pattern

여기에서 사용되는 각 매개변수는 다음과 같이 정의할 수 있습니다.

% 그리고: ~을 위한 실행 가능 파일 이름

% 피: ~을 위한 프로세스 ID 또는 pid.

% 티: ~을 위한 타임 스탬프 추가

4단계 . 다음으로 '/etc/sysctl.conf' 파일을 변경하여 이전 설정을 영구적으로 적용해야 합니다. 이 파일을 엽니다.

$ 스도 나노 / / sysctl.conf

이제 이 파일에 다음 줄을 추가합니다.

커널.코어_패턴 = / 시간 / 덤프 / 코어 / 핵심

또한 이 줄 대신 다음을 추가할 수 있습니다.

커널.코어_패턴= '/tmp/dump/cores/core_%e.%p_%t'

그게 우리가 해야 할 전부입니다. 이제 '코어 덤프 생성' 섹션에서 언급한 대로 코어 덤프를 생성합니다. 그런 다음 코어 파일이 생성되었는지 여부를 확인할 수 있습니다.

$ ls -엘 / 시간 / 덤프 / 코어 /

'Sysctl' 명령을 사용하여 코어 덤프 위치 설정

앞에서 언급했듯이 sysctl 명령을 같은 목적으로 사용할 수도 있습니다. 코어 덤프 위치와 코어 파일의 형식을 변경해 보겠습니다.

1 단계 . 새 디렉터리를 만들고 필요한 권한을 부여합니다.

$ mkdir -피 / 시간 / 내 덤프

$ chmod a+rwx / 시간 / 내 덤프

2 단계 . 이제 다음 명령을 실행하십시오.

$ 스도 시스템 -안에 커널.코어_패턴= / 시간 / 내 덤프 / 핵심_ % 그리고. % 피_ %

3단계 . 이제 다시 이전과 마찬가지로 코어 덤프를 생성합니다. 그런 다음 코어 파일이 생성되었는지 확인하십시오.

$ ls -엘 / 시간 / 내 덤프 /

Ubuntu 시스템에서 코어 덤프는 종종 Apport로 전송됩니다. Red Hat 기반 시스템의 경우 자동 버그 보고 도구(ABRT)로 전달될 수 있습니다. 처음에는 코어 덤프 위치를 구성하는 데 문제가 있어서 Ubuntu 20.04에서 Apport를 완전히 비활성화해야 했습니다. 아마도 이것은 Red Hat 및 기타 제품의 경우일 수도 있습니다.

결론

이 기사에서는 Ubuntu 20.04 OS에서 코어 덤프의 위치를 ​​사용자 정의하는 방법을 살펴보았습니다. 코어 덤프는 무엇이 잘못되었는지 파악하는 데 도움이 될 수 있지만 중요한 데이터를 유출하는 데는 끔찍합니다. 코어 덤프는 필요하지 않을 때마다 비활성화하고 반드시 필요한 경우에만 활성화해야 합니다. 이러한 상황에서는 일반 사용자가 데이터에 액세스할 수 없도록 파일이 안전하게 저장되어 있는지 확인하십시오. 또한 결정에 관계없이 항상 구성을 테스트하여 의도한 대로 작동하는지 확인해야 합니다.

코어 덤프 및 기본 구성은 다양한 운영 체제에서 다르게 처리됩니다. 최근에 대부분의 Linux 시스템은 systemd를 채택하여 약간의 규칙 조정을 가져왔습니다. 시스템 구성 방식에 따라 코어 덤프를 검색해야 할 수도 있습니다.