. 프로그램 에러 시그널들 (SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGABRT) - 매우 중요 ★★★★★

다음의 시그널들은 심각한 프로그램의 에러가 운영체제나 컴퓨터 자체에 의해 검출되었을 때 발생 된다. 
일반적으로, 이들 시그널 모두는 당신의 프로그램이 심각하게 깨져있고, 에러가 포함된 그 실행을 계속할 아무런 방법이 없음을 지적한다.


어 떤 프로그램들은 프로그램의 에러 시그널로 인해서 종료되기전에 그들을 깨끗하게 처리한다. 예를 들어, 터미널 입력의 반향을 끈(tnun off) 프로그램들은 다시 반향을 켤 목적으로 프로그램 에러 시그널들을 처리할 것이다. 핸들러는 시그널을 위한 디폴트 동작을 정하고 그 동작을 함으로써 끝날 것이다. 만일 프로그램이 시그널 핸들러를 가지지 않았다면, 프로그램은 그 시그널로 인해서 종료될 것이다.

SIGFPE 시그널은 심각한 산술적 에러를 보고한다. 그 이름이 "floating-point exception"에서 유래된것이라 할지라도, 이 시그널은 실제로는 모든 산술적 에러들에 작용한다. 만일 어떤 프로그램이 어떤 위치에 정수 데이터를 저장하고 그 데이터에 플로팅-포인트 명령을 사용한다면, 이것은 그 프로세서가 데이터를 플로팅-포인트 수로써 인식할 수 없기 때문에 종종 "유용하지 않은 연산"의 원인이 된다.

SIGILL 시그널의 이름은 "비합법적인 명령(illegal instruction)"에서 유래되었다
그것은 쓸모없거나 특권이 부여된 명령어를 실행하려 했다는 의미이다. 
오직 유용한 명령어만이 발생된 C 컴파일러에서, SIGILL은 전형적으로 실행 가능 파일이 훼손되었거나, 당신이 데이터를 실행하려 시도했다는 것을 지적한다. 

후자의 상황이 발생되는 일반적 상황으로는 함수를 위한 포인터가 있을 것이라고 예상된 곳에서 유용하지 않은 오브젝트를 파싱하거나, 자동 배열의 끝을 넘어서 기록을 하고( 또는 자동 변수를 위한 포인터와 유사한 문제들) 스택 프레임의 반환 어드레스 처럼 스택에서 
다른 데이터의 훼손과 같은 문제들이 있다.

SIGSEGV 시그널은 할당된 메모리의 범위를 벗어나는곳에서 읽거나, 쓰기를 시도할 때 발생 된다. 
(실제로, 그 시그널들은 프로그램이 충분한 영역을 할당받지 못할 때 시스템 메모리 보호 메커니즘에 의해서 발생한다.) 

그 이름은 "segmentation violation"의 약자이다. 
SIGSEGV 상황이 발생되는 가장 일반적인 방법은 비참조 되는 널( defeferencing a null) 이나 초기화되지 않은 포인터에 의한 것이다. 

널 포인터는 주소 0으로 참조되고, 대부분의 운영체제는 이 주소가 정확하게 유용하지 않음을 확실히
하기 때문에
비참조 널 포인터는 SIGSEGV가 발생될 것이다. 
(어떤 운영체제는 주소가 0인 메모리도 유용하고, 비참조 널 포인터는 그들 시스템상에서는 시그널을 발생하지 않는다.) 
비초기화된 포인터에서는, 유용하지 않거나, 유용하더라도 임의의 주소들을 갖게된다. 
SIGSEGV 상황이 얻어지는 다른 일반적 방법은 배열에 포인터를 사용했을 때 그 배열의 끝을 체크하기를 실패했을 때이다. 

SIGBUS 시그널은 유용하지 않은 포인터가 비참조되었을 때 발생 된다. 
SIGSEGV 처럼, 이 시그널은 초기화되지 않은 포인터를 비참조 한 것의 결과이다. 
두 시그널의 차이점은 SIGSEGV는 유용한 메모리에서 유용하지못한 억세스를 지적하고, 
SIGBUS는 유용하지못한 주소를 억세스 하는 것을 지적한다. 
특별하게, SIGBUS 시그널은 4개로 나누어지지 않은 주소에 4-단어 정수로 참조하는것처럼, 
부적당한 포인터가 비참조 됨으로써 발생한다. 
(각종 시스템은 주소 정렬은 위한 자신만의 필요조건을 갖는다.) 이 시그널의 이름은 "bus error"의 약자이다.

SIGABRT 시그널은 프로그램 그 자체와 abort가 호출되었음을 보고함으로써 발생되는 에러를 지적한다.

2. 종료 시그널 (SIGHUP, SIGINT, SIGQUIT, SIGTERM, SIGKILL) - 중요 ★★★★

이들 시그널들은 이런 저런 방법으로 프로세스를 종료함을 알리기위해 사용된다. 
그들은 완전히 다른 목적을 위해 사용되기 때문에 다른 이름을 가졌고, 프로그램은 그들은 다르게 취급하기를 원할 것이다.
이들 시그널들은 처리하기 위한 이유는 보통 당신의 프로그램이 실제로 종료되기전에 적당하게 처리할 수 있도록 하기 위한 것이다. 
예를 들어, 당신은 상황정보를 저장하고, 임시 파일들을 지우고, 이전의 터미널 모드를 반환하기를 원할수도 있다. 
그와 같이 핸들러(handler)는 발생된 시그널을 위한 디폴트 동작을 지정하고 그리고 그 시그널을 다시 발생시킴으로써 종료할 것이다. 
이것은 만일 프로그램이 핸들러를 가지지 않았더라도, 그 시그널로 인해서 프로그램이 종료될 것이다.

SIGHUP ("hang-up") 시그널은 사용자 터미널의 단절을 보고하기 위해 사용되어지는데, 
아마도 네트웍이나 전화선 연결이 끊어졌기 때문이다. 

SIGINT("program interrupt") 시그널은 사용자가 INTR 문자를 (보통 C-c)을 입력했을 때 보내어진다. 

SIGQUIT 시 그널은 다른 키_QUIT 문자, 보통 C-\_에 의해서 제어된다는 것을 제외하고는 SIGINT와 유사하고, 그 프로세스가 종료 될 때 프로그램 에러 시그널처럼 코어 파일을 작성한다. 당신은 사용자에 의해 "검출된" 프로그램 에러 상황으로 이들을 생각할 수 있다. 

SIGTERM 시그널은 프로그램을 종료하는데 사용하는 포괄적인 시그널이다. SIGKILL과 달리, 이 신호는 블록되어진고, 처리되어지고 무시되어질 수 있다.

SIGKILL 시그널은 즉각적인 프로그램 종료를 일으키기 위해서 사용되어진다. 이 시그널은 처리되거나, 무시되거나 할 수 없고, 그 결과는 항상 치명적이 된다. 이 시그널은 블록하는것도 불가능하다. 

3. 알람 시그널 (SIGALRM, SIGVTALRM, SIGPROF) - 알아도 그만.. 몰라도 그만..  ^^;;

그들 시그널은 타이머의 경과를 지적하는데 사용되어진다. 
그들 시그널을 위한 디폴트 동작은 프로그램을 종료를 일으키는 것이다. 
이 디폴트 동작은 거의 유용하지 않다. 
그 들 시그널을 사용하는 대부분의 방법은 어느 경우에 맞는 핸들러 함수들을 요구하는 것이다.

SIGALRM 시그널은 전형적으로 실제또는 클럭 시간을 계산한 타이머의 경과를 지적한다. 
예를 들어 alarm 함수에의해 사용되어진다. 

SIGVTALRM 시그널은 전형적으로 현재 프로세스에 의해 사용된 CPU시간을 계산하는 타이머의 경과를 지적한다. 
그 이름은 "virtual time alarm"의 약자이다.

SIGPROF 시그널은 현재의 프로세스에 의해 사용된 CPU 시간과, 
프로세스를 대신하여 시스템에의해 사용된 CPU시간의 둘을 계산한 타이머의 경과를 지적하는데 사용된다. 
타이머가 자원의 프로파일링을 위한 도구로써 사용되어지므로, 시그널의 이름이 SIGPROF이다.

4. 비동기 입/출력 시그널 (SIGIO, SIGURG)

이 절에 설명된 시그널들은 비동기 입/출력 도구들과 함께 사용되어진다. 
당신은 어떤 특정한 파일 기술자가 그들 시그널을 발생시키도록 하기 위해서 fcntl을 호출함으로써 명백한 동작을 취하도록 해야한다.

SIGIO 시그널은 파일기술자가 입력 또는 출력을 수행할 준비가 되어있을 때 보내어진다. 
대부분의 운영체제에서, 터미널과 소켓만이 SIGIO를 발생시킬 수 있다. 
보통의 파일들을 포함한 다른 종류들은 당신이 그들에게 요청했을지라도 SIGIO신호를 발생시키지 않는다.

SIGURG 시그널은 소켓에 도착한 데이터가 "긴급"하거나 범위를 벗어 났을 때 보내어진다.

5. 작업 제어 시그널 (SIGCHLD, SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU) - 중요 ★★★★

이들 시그널은 작업 제어를 지원하기 위해서 사용되어진다. 
만일 당신의 시스템이 작업 제어를 지원하지 않는다면 시그널들은 발생되어지거나, 처리될 수는 없지만 매크로들은 정의되어있다. 
당신이 실제로 작업이 어떻게 제어되는지를 이해할 수 없다면 그들 시그널을 그대로 방치할 것이다.

SIGCHLD 시그널은 자식 프로세스들중의 하나라도 종료되거나 멈출 때마다 부모 프로세스에게 보내어진다. 
이 시그널을 위한 디폴트 동작은 그것을 무시하는 것이다. 

당신은 프로세스가 계속되도록 하기 위해서 SIGCONT 신호를 보낼 것이다.
SIGCONT 시그널을 위한 디폴트 동작은 만일 그 프로세스가 멈추었다면 그 프로세스를 계속하도록 만드는 것이고 
그렇지 않다면 그것을 무시하는 것이다. 
대부분의 프로그램에서는 SIGCONT를 처리할 아무런 이유가 없다. 
그들은 전에 멈추었었음을 인식함이 없이 계속 실행되고 있다고 가정한다. 

SIGSTOP 시그널은 프로세스를 멈춘다. 그것은 처리되거나, 무시되거나 블록될 수 없다.

SIGTSTP 시그널은 상호 작용하는 멈춤 신호이다. SIGSTOP와는 달리 이 신호는 처리되거나 무시되어질 수 있다. 
당신의 프로그램에서 프로세스가 멈추었을 때 파일이나 시스템 테이블을 안전한 상황으로 만들어놓을 특별한 필요가 있다면 
이 신호를 처리할 수 있다.

한 프로세스가 배경 작업으로써 실행되고 있는 동안 사용자의 터미널로부터 읽을 수 없다. 
배경 작업에 속한 어느 프로세스가 터미널로부터 읽으려 시도할 때, 그 작업에 속한 모든 프로세스는 SIGTTIN 신호를 받는다. 
이 시그널을 위한 디폴트 동작은 그 프로세스를 멈추는 것이다. 

SIGTTOU 시그널은 배경 작업에 속한 프로세스가 터미널에 출력하려 시도하거나 그 터미널 모드를 설정하려 시도할 때 발생 된다. 
다시 말하면 디폴트 동작은 그 프로세스를 멈추는 것이다. 
프로세스가 멈추어있을 동안, SIGKILL 시그널과 SIGCONT시그널을 제외하고는 어느 다른 시그널들은 배달되어질 수 없다.

SIGKILL 시그널은 항상 프로세스의 종료를 유발하고 블록되거나 무시될 수 없다. 
당신이 SIGCONT 시그널을 무시하거나 블록할 수 있지만, 그것은 만일 그 프로세스가 멈추어져있다면 프로세스가 계속되도록 한다. 
프로세스에게 보낸 SIGCONT 시그널은 아직 미해결인채로 남아있는 멈춤 시그널을 프로세스가 버리도록 한다. 
이와 비슷하게, 어떤 프로세스에서 아직 미해결인채로 남아있는 SIGCONT 시그널은 멈춤 시그널이 도착했을 때 버려진다. 
고아가 되어버린 프로세스 그룹에 있는 한 프로세스에게 SIGTSTP, SIGTTIN, 또는 SIGTTOU 시그널을 보내면 그것은 처리되지도 않고, 
그 프로세스는 멈추어 지지도 않는다. 
그것을 계속할 아무런 방법이 없는 부당하게 되어버린 프로세스를 멈추게 하라. 
운영체제에 의존하지 말고당신이 무언가를 사용해서 멈추게 하라. 어떤 시스템은 아무런 일도 하지 않을 것이다. 
다른 시스템들은 대신에 SIGKILL 또는 SIGHUP와 같은 시그널들을 배달할 것이다. 

6. 잡다한 시그널 (SIGUSR1 ~ SIGUSR22)

그들 시그널은 다양한 다른 상활들을 보고하기 위해서 사용되어진다. 이들의 디폴트 동작은 프로세스가 종료되도록 하는 것이다.

SIGPIPE 시그널은 읽는 프로세스가 없는 상황에서의 PIPE에 대한 쓰기시 발생한다.

SIGUSR1 과 SIGUSR22 시그널들은 당신이 원하는 어떤 방법을 사용하지 못하도록 한다. 그들은 프로세스간 통신을 위해서 유용하다. 

그들 시그널을 보통 심각하기 때문에 당신은 그 시그널을 받은 프로그램에서 그들은 위한 시그널 처리를 해야할 것이다.

아래의 내용은  HP C7000 BL460c 장비에서 vmcore를 생성하기 위한 구성 조건입니다

vmcore를 생성하기 위한 조건으로 장비별로 특성을 가지는 경우도 생기는듯 합니다. 드라이버를

업데이트 한다든지 Firmware를 올린다든지.. 이부분에 있어서는 하드웨어 벤더사의 의견도

중요합니다.


RHEL 6.4 X86_64

HP C7000 BL460c

 

이슈사항

OS 설치 후 기존의 kdump 설정대로 진행하였을 경우 테스트 결과 kdump가 실행되지 않고 hang 상태를 유지하고 있었습니다.

1. kdump 테스트시 error message 발생

           NMI: IOCK error (debug interrupt?)

 

해결방법

1. HPSA 드라이버 최신 업데이트

           HPSA version:        3.4.4-125

 

2. HP에서 권장하는 kernel 파라미터 설정 (reboot 해야 적용)

/etc/sysctl.conf

           kernel.sysrq = 1

           kernel.panic = 10

           kernel.panic_on_oops = 1

           kernel.unknown_nmi_panic = 1

           kernel.panic_on_unrecovered_nmi = 1

           kernel.panic_on_io_nmi = 1

          

 

/etc/grub.conf (intel_iommu=on intel_iommu=off로 변경 nmi_watchdog=1 추가)

title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)

           root (hd0,0)

           kernel /tboot.gz logging=vga,serial,memory

           module /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg00-LogVol01 intel_iommu=off rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg00/LogVol00 rd_NO_MD rd_LVM_LV=vg00/LogVol01 SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM nmi_watchdog=1 rhgb quiet

           module /initramfs-2.6.32-358.el6.x86_64.img

 

3. kdump.conf 설정

           path /var/crash

           core_collector makedumpfile -c --message-level 1 -d 31

 

4. kdump 버전

           kexec-tools-2.0.0-258.el6.x86_64

 

5. 참고사항

ilo를 사용하는 환경에서 "# echo c > /proc/sysrq-triger" kdump 생성 테스트하면 생성되지 않는 문제가 있다고 합니다.

서버에 monitor 를 직접 연결하시고 kdump 생성 테스트 해야합니다.


6. BSSAPDB, BSSAPAP kdump 생성 안되는 이유

           - /var/crash 영역이 multipath device(mpatha)로 인식이 되어있었고, kdump initrd(ramdisk) 에서는 multipath module

             인식을 하지 못하여 /var/crash 영역을 mount 하지 못해 dump 파일이 생성이 되지 않았습니다.

           - 이 부분을 해결 하기 위해서 아래와 같은 절차로 진행을 하였습니다.

 

6.1 /etc/multipath.conf 파일 수정

           - /etc/multipath.conf 파일을 /root 영역으로 move

           - OS 영역 디스크 wwid 로 식별하여 blacklist 등록

           - OS initramfs 재생성후 reboot

           - reboot 완료 후 /root/multiipath.conf 파일을 /etc/multipath.conf 로 원복

           - multipathd 데몬 재시작

           - 기존에 있던 kdump initrd(kdump ramdisk) 백업

           - kdump initrd(kdump ramdisk) 재생성

           - echo "c" > /proc/sysrq-trigger 명령어로 테스트

           - /var/crash/var/crash/127.0.0.1(Time) 폴더에 생성 확인




지쳐 쓰러질 때까지 연습하다가 가슴이 뜨거워져 울어버린 이야기! 
“세상살이라고 하는 것은 절실함이 있어야 한다. 두려운 건 비판이 아니라 패배다.” 

김성근 감독은 선수들에게 혹독한 연습을 시키는 것으로 유명하다. 그에게 “이쯤 하면 됐다”는 순간은 없다. 몸과 정신이 할 때까지, 할 수 있을 때까지 한다. 그는 비가 오는 날은 더 혹독하게 연습을 한다. 그날의 고통이, 너무 힘들어 포기하고 싶을 때 그것을 이겨내야 하는 이유가 되어주기 때문이다. 완전히 파김치가 된 그날의 고달픔이 야구 잘하고 싶다는 선수들의 생각을 머릿속 생각이 아닌 가슴속 절실함으로 만들어주기 때문이다. 바닥에서 헤매던 선수들도 김성근 감독을 만나면 최고의 선수로 성장한다. 만년 꼴찌였던 팀도 그가 감독을 하면 최고의 팀으로 거듭난다. 그런 결과를 만드는 것이 바로 치열한 연습이다. 오늘보다 내일, 내일보다 모래 한발 더 
뛰는 연습이 승리를 이끌어내는 것이다. 


그렇게 악착같이 해서 이루어낸 결과이기 때문에 김성근 감독은 선수들에게 ‘고맙다’ ‘수고했다’는 말을 하지 못한다. 선수들이 얼마나 힘들고 고통스러운지 아니까, ‘고맙다’고 말하는 순간 주저앉을 것 같아서, 비속에서 하루 종일 야구공을 쫓고, 눈밭을 구르며 정신력을 키웠던 선수들이 ‘수고했다’라고 말하는 순간 나약해질 것 같아서 그 말 한마디를 해주지 못하는 것이다. 


현실이 바닥이라면, 거기서부터 출발하면 된다!
“한순간도 포기하지 않으면 끝끝내 이긴다는 것, 내가 증명할 수 있는 건 그것뿐이다.”

김성근 감독은 어렵고 힘든 때일수록 자기 자신과 약속했다. 반드시 이기겠다고, 한계를 뛰어넘겠다고 스스로에게 약속했다. 그는 경기에서 지면 늘 걸어서 숙소로 돌아갔다. 걸으면서 생각했다. 때로는 폭염 속에서, 때로는 쌓인 눈 속에서 무엇이 문제인지 생각했다. 그때마다 그가 찾은 답은 하나였다. 

‘결국 나구나…….’
 
그렇게 모든 손가락이 자신을 향해 있을 때 비로소 답이 보였다. 거북이처럼 목과 두 손 두 발을 자기 속에 깊이 웅크리고 있을 때 살길을 찾을 수 있었다. 힘들고 어려워도 나 자신이 진심으로 전력투구를 하는 것만이 살길이라는 것을 알게 되었다. 그래서 세상과 쉽게 타협할 수 없었고, 진실이 아니라면 쳐다볼 수 없었다. 그렇기 때문에 그는 40년이 넘는 세월을 야구 감독으로 살아오면서 세상과 수없이 부딪혔다. 오해를 받고, 사실과는 다른 방향으로 몰리기도 했다, 이렇게까지 몰라주나 속이 탈 때가 많았다. 너무 힘이 들 때는 ‘내가 왜 이렇게 세상 속에서 혼자 싸우고 사는가’ 지칠 때도 있었다. 

그러나 그는 여전히 믿는다. 평생 남이 만들어 놓은 길만 따라갈 게 아니라면 자신의 신념을 가지고 자신의 길을 개척해나가야 한다고. 그 길 위에서 부딪히고 싸우면서 포기하지 않고 뜻하는 것을 이루는 삶이 아름답다는 것을 믿는다. 
야신 김성근 감독은 말한다. 

“내가 가장 좋아하는 길은 야구장 가는 길이다. 
앞으로도 나는 그 길 위에서 부딪히며 살아갈 것이다. 
그것이 나의 베스트다.” 

그가 이 책을 통해 하고 싶은 말은 딱 하나다. 사람은 생각하는 대로 살 수 있다는 것이다. 하겠다는 뜻만 있으면 어떤 역경 속에서도 이룰 수 있다는 믿음이다. 삶에서 두려운 건 비판이 아니라 패배다. 정말 절실하게 원하면 끝끝내 이길 수 있다. 세상에 사람으로 태어났으니 힘들고 고달파도 그렇게 절실하게 살면 반드시 승리할 수 있다. 그것이 인생이다.

====================================================

"실력이 없다는 것과 발견하지 못했다는 것은 다른 것이다. 많은 선수들이 실력이 없어서 
 야구를 그만두는 것이 아니다. 아무도 그 실력을 발견해 주지 못해서 야구를 그만둔다. 
 세상에 완벽한 사람은 없다. 

 열 개 중에 하나만 잘해도 그는 이세상에 필요한 사람이다. 

리더는 사람을 포기 하지 않는다는 것을 몸소 보여준 사람의 고백들이 담백하게 담겨 있는 책.
특히 SK 와인번스 시절 최정 선수와의 일화는 유명하게 전해진다. 리더가 제시해야 될것이 
이기기 위한 전략이 아닌, 한 개인의 삶의 모습 까지도 변화 시켜 주는것이..
어쩌면 그가 야신을 넘어서 진정한 스승으로 인정 받을수 밖에 없는 이유가 아닐까...


김성근 감독이 최정에게 2시간 동안 상담해준 대화.. 

◇고난에 대처하는 세가지 유형 

"사람에는 고난에 대처하는 세가지 유형이 있다. 고난에 쓰러지는 것이 하급, 고난을 버텨내는 것이 중급이다. 가장 높은 정신의 소유자는 고난이 왔을 때 더 큰 압박 속에 자신을 가둔다. 그렇게 이겨낼 때 고난 이상의 성취를 할 수 있는 것이다. 시즌 전에 아무리 계산해봐도 예상 승수가 안 나왔다. 포수가 없으니 계산이 안섰다. 겨우 겨우 최대치를 잡아보니 73승정도 되더라. 그래서 80승이라고 외부에 밝혔다. 목표가 아니라 예상승수다. 73승도 어려운데 80승이 말이 되나. 하지만 팀이 위기를 맞았기 때문에 나를 더 몰아친 것이다. 그 속에서 개막전에 선발 3명(글로버 송은범 전병두)을 쓰는 아이디어가 나왔다. 만약 개막전서 패했다면 지금 SK도 없을거다. 시범경기의 패배의식이 계속 이어졌을거다. 지금 힘든거 안다. 하지만 그보다 더 힘든 곳(목표)으로 자신을 몰아가라. 그런 과정을 통해 아이디어가 생기고 살 길이 생기는 것이다."

 

◇고민에 선을 그어라 

"고민이 오면 피하지 말아라. 고민하지 말아야 한다는 생각이 또 다른 고민을 낳는 것이다. 하지만 야구장의 라인을 넘기 전까지만 해라. 야구장에 들어서는 순간, 네가 최고라는 마음으로 플레이하라. 플레이하는 순간까지 고민을 끌고 들어가면 아무것도 안된다. 첫 타석에서 못친 건 돌아나오면서 잊어버려라. 지나간 실패에 얽메어있으면 안된다. 분석과 미련은 다른 것이다. 고민할 시간에 다음 타석 준비해라. 경기에 집중하면서 볼 배합 연구해라. 지나간 실패보다 다가올 성공이 중요하다. 또 고민을 머리로 풀려고 하지마라. 안되면 계속 쳐라. 땀은 머리를 단순하게 정리해주는 힘이 있다. 또 그렇게 부딪혀서 치고 또 치다보면 네가 잊고 있었던 무언가를 찾을 수 있을 것이다.


◇이치로도 200번 이상 실패한다 

"이치로는 천재다. 메이저리그서도 매년 200안타를 치는 선수다. 하지만 1년 토탈로 보라. 200번(타수) 넘게 실패한다. 넌 이제 막 20번 정도 실패했다. 겨우 그정도로 무슨 고민이냐. 너보다 더 많이 실패하고도 더 크게 되는 사람들이 많다. 지금 네가 제일 괴롭다고 느껴지겠지만 세상엔 더한 고난을 이겨낸 사람들이 많다. 게다가 넌 천재형 선수가 아니다. 네가 어떻게 여기까지 왔나를 생각해라. 펑고 받다 기절까지 할 정도로 땀 흘려 이뤄낸 성과다. 더 잘하고 싶으면 처음으로 돌아가라. 안타 하나, 홈런 하나에 흔들리지 마라. 넌 타점을 많이 올려야 할 타자다. 안타 못쳐도 땅볼이나 희생플라이로 타점 만드는 것에 재미를 붙여라." 

◇술? 야구를 위해 마셔라 

"답답한 것이 있으면 가끔 야구 외적인 것으로 풀어라. 난 술 먹지 말라고 한 적 없다. 너무 많이 힘들면 다 잊고 술도 한잔 해라. 끝까지 먹어도 좋다. 단, 다음날 일어나면 다시 야구로 돌아와라. 나도 가끔 술을 마신다. 대신 야구로 돌아오기 위해 마시는거다. 그날 그 자리에서 다 털어놓고 새출발하기 위해서 마시는거다. 그냥 괴롭다고 타락하는 것과 다 비우기 위해 타락하는 것은 전혀 다르다." 


◇성공엔 네가지 단계가 있다 

"성공에는 4가지 단계가 있다. "처음은 '노력'이고 그 다음이 '성과'다. 세번째는 그에 따른 '보수(돈)'다. 그리고 성공의 마지막 단계는 '쟁취감(성취감)'이다. 돈이나 명예를 위해 땀흘리는 것이 아니라 개인의 성취를 위해 도전하고, 그 결과를 쟁취했을 때 진정한 성공이라 할 수 있는 것이다. SK 선수들은 지금 3번째 단계까지는 성공했다. 하지만 마지막 도전은 하지 않는다. 지금 보다 더 좋은 선수가 되기 위한 개인의 노력은 없다. 보다 높은 곳에 목표를 설정하고 거기에 도전해야 한다. 난 SK 선수들이 스스로 그 답을 찾아주길 바라고 있다." 

'BookStory' 카테고리의 다른 글

아프니까 청춘이다.  (0) 2011.02.21

+ Recent posts