# 시스템 운영중 어떠한 문제로 인하여 갑작스런 패닉 현상이 나타나게 되면 보통 crash 디렉토리를 지정 하지 않았다면 /var/crash/[hostname]/ 밑에 unix 파일과 core 파일을 생성 합니다.
#### core 파일 과 unix 파일을 이용하여 시스템의 문제 발생 원인을 분석 할수 있습니다.
### core 분석 도구.
1. strings
2. arp
3. ipcs
4. crash
### core dump 설정 여부 확인.
(readytop>root)/etc/init.d# dumpadm ( solaris 7 이상 OS 부터 지원 )
Dump content: kernel pages
Dump device: /dev/dsk/c0t0d0s1 (swap)
Savecore directory: /var/crash/test ---> coredump 생성 경로.
Savecore enabled: 예
(readytop>root)/etc/init.d#
### sunOS 5.7 이하 버젼 core dump 설정.
Solaris 1 에서 덤프 활성화: 다음과 같이 /etc/rc.local 에서 주석을 지운다:
#
# Enable savecore (default is disabled)
#
mkdir -p /var/crash/´hostname´
echo -n 'checking for crash dump... '
intr savecore /var/crash/´hostname´
echo ''
Solaris 2 덤프 활성화: 다음과 같이 /etc/init.d/sysetup 에서 주석을 지운다:
##
## Enable savecore (default is disabled)
##
if [ ! -d /var/crash/´uname -n´ ] then mkdir -p /var/crash/´uname -n´ fi echo 'checking for crash dump...\c ' savecore /var/crash/´uname -n´ echo ' '
Solaris 2.6 이하는 core 파일은 자동으로 생성되지 않는다.
Solaris 7 부터는 default로 생성되게 설정되어 있다.
/etc/init.d/sysetup 파일의 내용중 아래와 같은 부분이
있는데 이 부분의 # 상태로 막혀 있는 부분을 열어 줘야
생성이 된다.
## Default is to not do a savecore
##
#if [ ! -d /home/crash/`uname -n` ]
#then mkdir -m 0700 -p /home/crash/`uname -n`
#fi
# echo 'checking for crash dump...c '
#savecore /home/crash/`uname -n`
# echo ''
====================================================
## Default is to not do a savecore
##
if [ ! -d /home/crash/`uname -n` ]
then mkdir -m 0700 -p /home/crash/`uname -n`
fi
echo 'checking for crash dump...c '
savecore /home/crash/`uname -n`
echo ''
### 분석 명령어
설명 Solaris 1 (SunOS 4) Solaris 2.x
어떤 OS인가? strings vmcore.0 | grep SunOS strings vmcore.0 | grep SunOS
어떤 호스트인가? strings vmcore.0 | grep machine strings vmcore.0 | grep machine
strings vmcore.0 | more strings vmcore.0 | more
어떤 프로세스가 ps -laxk vmunix.0 vmcore.0 crash 사용
실행중이었나?
시스템 테이블 보기 pstat -T vmunix.0 vmcore.0
네트웍 통계 보기 netstat vmunix.0 vmcore.0 netstat -d unix.0 vmcore.0
NFS 통계 보기 nfsstat -n vmunix.0 vmcore.0 nfsstat -n unix.0 vmcore.0
arp 테이블 보기 arp -c vmunix.0 vmcore.0 arp -a unix.0 vmcore.0
IPC 보기 ipcs -a -N vmunix.0 -C vmcore.0 ipcs -a -N unix.0 -C vmcore.0
CRASH 사용하기: /etc/crash -d vmcore.0 -n vmunix.0 /usr/sbin/crash -d vmcore.0 -n vmunix.0
crash 도움말 > help > help
"p" 명령어 도움말 > help p > help p
프로세스 보기 > p -e > p -e
프로세스 상세사항 > p -l
crash 상세사항 > status
crash 종료 > q > q
ADB 디버거 사용하기: adb -k vmunix.0 vmcore.0 adb -k unix.0 vmcore.0
패닉 메시지가 뭐였나? *panicstr/s *panicstr/s
호스트이름 hostname/s $<utsname
OS 버전 version/s $<utsname
도메인 domainname/s srpc_domain/s
시스템 sysname/s $<utsname
제조업체 hw_provider/s
크래쉬 시간/날짜 time/Y TIME/y
부트 시간/날짜 *boottime=Y *time-(lbolt%0t100)=Y
시스템 메시지 표시 msgbuf+10/s msgbuf+14s
최근의 메시지 버퍼 ] $<msgbuf $<msgbuf
(ring)
C 스택 역추적 $c $c
스택 역추적 <sp$<stacktrace
루트 장치는 어떤 것? rootfs$<bootobj
스왑 장치는 어떤 것? swapfile$<bootobj
dumpfile$<bootobj
레지스터 보기 $cregs
IPC 보기 ipcaccess/10i
adb 종료 CTRL-D or $q CTRL-D or $q
커널 해킹 (!#?) : adb -k /vmunix /dev/mem adb -k /dev/ksyms /dev/mem
'Solaris > 기술과 팁' 카테고리의 다른 글
[팁] 솔라리스 서버가 조립된 날짜를 알려면? (0) | 2010.01.25 |
---|---|
[보안]솔라시스 암호없는 사용자 검색 및 로그인 실패 기록, root 로그인 제한 등의 방법 (0) | 2010.01.21 |
[팁] Solaris10에서 TCP/Wrapper 설정 (0) | 2010.01.21 |
솔라리스에서 기본적으로 동작되는 서비스에 대한 설명 (0) | 2010.01.21 |
root 이외의 관리자 계정의 존재 여부를 확인 및 root 이외 관리자 계정 생성하기 (0) | 2010.01.21 |