본문 바로가기

IT/unix shell

core 파일 생성 감시하여, 내용 덤프후 파일 무브

반응형
#!/usr/bin/ksh

#기록파일의 초기화
cat /dev/null > CoreList.lst
cat /dev/null > Core_Batch_List.lst

#반복작업
while true
do
        #파일 감시 -f 파일여부 
        if [ -f /bin/core ]
        then
                sleep 5
                #명령어를 실행전에 더미로 한번씩 더 실행함
                file /bin/core
                filename=`file /bin/core | awk '{print substr($7,4,length($7)-4)}'`
                echo "core file:" $filename
                chmod 777 /bin/core
                date +%H_%M_%S_%Y_%m_%d
                core_name="/bin/core-real-"$filename"-"`date +%Y%m%d-%H%M%S`
                mv core $core_name
                ls -alt core-* |awk '{print $9}'| awk -F"-" '{ printf("%s %s %s %s %s\n", $4, $2, $5, $0, $3);}' >> CoreList.lst
                echo "bt" | gdb -c $core_name $filename |grep "#" > ./GDB/GDB_SERVER_$filename.rlt
                mv core-* CORE_DUMP/SERVER/.

        fi

        if [ -f /batch/bin/core ]
        then
                file /batch/bin/core
                filename=`file /batch/bin/core | awk '{print substr($7,4,length($7)-4)}'`
                echo "core file:" $filename
                chmod 777 /batch/bin/core
                date +%H_%M_%S_%Y_%m_%d
                core_name="/batch/bin/core-real-${filename}-`date +%Y%m%d-%H%M%S`"
                mv /batch/bin/core /batch/bin/$core_name
                ls -alt core-* |awk '{print $9}'| awk -F"-" '{ printf("%s %s %s %s %s\n", $4, $2, $5, $0, $3);}' >> /bin/Core_Batch_List.lst
                echo "bt" | gdb -c /batch/bin/$core_name /batch/bin/$filename |grep "#" > ./GDB/GDB_BATCH_$filename.rlt
                mv /batch/bin/core-* CORE_DUMP/BATCH/.
        fi

sleep 1

done

 

ksh 와 여러커맨드를 이용하면, 간단하게 이런기능이 가능한거임 ..

ksh, echo, date, gdb, grep, file, mv, 그리고 유닉스의 파이프를 이용한 예제(?)

다른분이 후딱 쓰신거 공부겸 주석달음

반응형