탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1의 일반적인 문제 해결 Oracle Solaris 11.1 Information Library (한국어) |
코어 파일은 프로세스 또는 응용 프로그램이 비정상적으로 종료될 때 생성됩니다. 코어 파일은 coreadm 명령으로 관리됩니다. 예를 들어, coreadm 명령을 사용하여 모든 프로세스 코어 파일이 단일 시스템 디렉토리에 지정되도록 시스템을 구성할 수 있습니다. 즉, 프로세스 또는 데몬이 비정상적으로 종료될 때마다 특정 디렉토리의 코어 파일을 검사하여 보다 간편하게 문제를 추적할 수 있습니다.
상호 독립적으로 사용/사용 안함으로 설정할 수 있는 두 개의 구성 가능한 코어 파일 경로는 다음과 같습니다.
프로세스별 코어 파일 경로: 기본값은 core이며 기본적으로 사용으로 설정되어 있습니다. 사용으로 설정할 경우 프로세스가 비정상적으로 종료될 때 프로세스별 코어 파일 경로로 인해 코어 파일이 생성됩니다. 새 프로세스는 상위 프로세스에서 프로세스별 경로를 상속합니다.
생성되는 프로세스별 코어 파일은 소유자 액세스에 대해 읽기/쓰기 권한을 가지는 프로세스 소유자가 소유합니다. 소유 사용자만 이 파일을 볼 수 있습니다.
전역 코어 파일 경로: 기본값은 core이며 기본적으로 사용 안함으로 설정되어 있습니다. 사용으로 설정할 경우 전역 코어 파일 경로를 사용하여 프로세스별 코어 파일과 컨텐츠가 동일한 추가 코어 파일이 생성됩니다.
생성되는 전역 코어 파일은 루트에 대해서만 읽기/쓰기 권한을 가지는 루트가 소유합니다. 권한이 없는 사용자는 이 파일을 볼 수 없습니다.
프로세스가 비정상적으로 종료될 때 기본적으로 현재 디렉토리에 코어 파일이 생성됩니다. 전역 코어 파일 경로를 사용으로 설정할 경우 프로세스가 비정상적으로 종료될 때마다 현재 작업 디렉토리와 전역 코어 파일 위치에 파일이 하나씩 생성될 수 있습니다.
기본적으로 setuid 프로세스는 전역 또는 프로세스별 경로를 사용하여 코어 파일을 생성하지 않습니다.
전역 core 파일 디렉토리를 사용으로 설정할 경우 다음 표의 설명에 따라 변수를 사용하여 core 파일을 서로 구별할 수 있습니다.
|
예를 들어, 전역 코어 파일 경로가 다음으로 설정된 경우
/var/core/core.%f.%p
PID가 12345인 sendmail 프로세스가 비정상적으로 종료되면 다음과 같은 코어 파일이 생성됩니다.
/var/core/core.sendmail.12345
전역, 영역 또는 프로세스별 기준으로 코어 파일 이름 패턴을 설정할 수 있습니다. 또한 시스템 재부트 시 지속되는 프로세스별 기본값을 설정할 수 있습니다.
예를 들어, 다음 coreadm 명령은 기본 프로세스별 코어 파일 패턴을 설정합니다. 이 설정은 기본 코어 파일 패턴을 명시적으로 무시하지 않은 모든 프로세스에 적용됩니다. 이 설정은 시스템 재부트 시 지속됩니다. 예를 들어, 다음 coreadm 명령은 init 프로세스가 시작한 모든 프로세스에 대한 전역 코어 파일 패턴을 설정합니다. 이 패턴은 시스템 재부트 시 지속됩니다.
# coreadm -i /var/core/core.%f.%p
다음 coreadm 명령은 모든 프로세스에 대해 프로세스별 코어 파일 이름 패턴을 설정합니다.
# coreadm -p /var/core/core.%f.%p $$
$$ 기호는 현재 실행 중인 셸의 프로세스 ID에 대한 위치 표시자입니다. 모든 하위 프로세스는 프로세스별 코어 파일 이름 패턴을 상속합니다.
전역 또는 프로세스별 코어 파일 이름 패턴을 설정한 후에는 coreadm -e 명령을 통해 사용으로 설정해야 합니다. 자세한 내용은 다음 절차를 참조하십시오.
사용자의 초기화 파일(예: .profile)에 명령을 삽입하여 사용자의 로그인 세션 중 실행되는 모든 프로세스에 대해 코어 파일 이름 패턴을 설정할 수 있습니다.
coreadm 명령으로 다음 경로를 설정하여 모든 시스템 프로세스에 대해 코어 파일을 생성하거나 프로세스별로 코어 파일을 생성하도록 setuid 프로그램을 사용/사용 안함으로 설정할 수 있습니다.
전역 setuid 옵션을 사용으로 설정할 경우 전역 코어 파일 경로를 통해 시스템의 모든 setuid 프로그램이 코어 파일을 생성할 수 있습니다.
프로세스별 setuid 옵션을 사용으로 설정할 경우 프로세스별 코어 파일 경로를 통해 특정 setuid 프로세스가 코어 파일을 생성할 수 있습니다.
기본적으로 두 플래그는 사용 안함으로 설정되어 있습니다. 보안상 전역 코어 파일 경로는 /로 시작하는 전체 경로 이름이어야 합니다. 루트가 프로세스별 코어 파일을 사용 안함으로 설정할 경우 개별 사용자가 코어 파일을 얻을 수 없습니다.
setuid 코어 파일은 루트 액세스에 대해서만 읽기/쓰기 권한을 가지는 루트가 소유합니다. 일반 사용자가 setuid 코어 파일을 생성한 프로세스를 소유한 경우에도 일반 사용자는 해당 파일에 액세스할 수 없습니다.
자세한 내용은 coreadm(1M) 매뉴얼 페이지를 참조하십시오.
|
옵션 없이 coreadm 명령을 사용하여 현재 코어 덤프 구성을 표시합니다.
$ coreadm global core file pattern: global core file content: default init core file pattern: core init core file content: default global core dumps: disabled per-process core dumps: enabled global setid core dumps: disabled per-process setid core dumps: disabled global core dump logging: disabled
# coreadm -e process
# coreadm $$ 1180: /home/kryten/corefiles/%f.%p
# coreadm -e global -g /var/core/core.%f.%p
# coreadm global core file pattern: /var/core/core.%f.%p global core file content: default init core file pattern: core init core file content: default global core dumps: enabled per-process core dumps: enabled global setid core dumps: disabled per-process setid core dumps: disabled global core dump logging: disabled