建立或继承一个首次故障数据捕捉执行环境。
在 Bourne 和 Korn shell 中:
/usr/sbin/rsct/bin/fcinit.sh [ [ -l ] [ -s {c | i } ] ] | [ -h ]
在 C shell 中:
source /usr/sbin/rsct/bin/fcinit.csh [ [ -l ] [ -s { c | i } ] ] | [ -h ]
如果一个脚本程序希望使用 FFDC 接口在 AIX 错误日志、BSD 系统日志或 FFDC 错误堆栈中记录信息,则必须使用该接口。
因下面的原因,应用程序希望建立一个 FFDC 环境:
通过 FFDC 接口而希望在 AIX 错误日志或 BSD 系统日志中记录信息的任何进程,必须建立一个 FFDC 环境。如果该进程不想使用一个 FFDC 错误堆栈,则该进程能建立一个不使用 FFDC 错误堆栈的基本 FFDC 环境。当某个进程想把来自自身或者自身所创建的线程以及它所创建的任何派生进程的故障信息记录在一个 FFDC 错误堆栈中时,该进程将建立一个包含 FFDC 错误堆栈的 FFDC 错误堆栈环境。仅当某个进程的祖先进程之一要求它在一个 FFDC 错误堆栈文件中记录故障信息时,该进程将继承一个包含 FFDC 错误堆栈的 FFDC 错误堆栈环境;在其它情况下,该进程将不会在 FFDC 错误堆栈中记录故障信息。
在包含一个 FFDC 错误堆栈的 FFDC 错误堆栈环境中,保存了一个 FFDC 错误堆栈文件,这样故障信息记录在 /var/adm/ffdc/stacks 目录中的一个文件中。这些文件的命名格式是 script_name.PID.date_and_time,其中 script_name 是脚本程序的名称,PID 是脚本程序的进程标识符,date_and_time 是脚本程序执行时的日期和时间值。无论何时当该脚本程序或其子进程在 FFDC 错误堆栈中记录故障信息时,它将记录在该文件中。
要使一个进程在 FFDC 错误堆栈中记录信息,该进程必须使用 fcpushstk FFDC 接口,并且进程必须在一个已建立的 FFDC 错误堆栈环境中运行。如果不存在一个 FFDC 错误堆栈环境,或者当存在一个 FFDC 错误堆栈环境而没有使用 fcpushstk 接口时,则该进程不会在 FFDC 错误堆栈中记录信息。当不需要故障调试信息时,该功能可以使进程处于正常或“安静”方式,而且当在一个特定环境中调用进程进行调试时,使用该功能也可以获得信息。
fcinit 必须在 FFDC 客户进程环境(“源”)中执行,以使得该命令能够正确地为脚本程序设置 FFDC 环境。使用该命令的基于脚本 FFDC 客户机必须获取此命令,以使得 fcinit 在客户进程映像中执行。如果没有作到这一点,FFDC 接口程序会在自身的进程映像中执行;当 FFDC 接口程序执行结束后,FFDC 环境中的任何设置将会丢失。要演示一个基于脚本应用程序如何获取 fcinit 命令,一个 Korn Shell 将发出下列指令:
. fcinit.sh <options and arguments>
一个 C shell 脚本将会这样:
source fcinit.csh <options and arguments>
使用 fclogerr FFDC 接口的进程必须建立一个 FFDC 环境。如果进程仅希望使用 fclogerr 接口,则可以建立一个没有 FFDC 错误堆栈的 FFDC 环境。
如果已经存在一个 FFDC 环境,而脚本程序试图创建一个时,该脚本程序将会继承已存在的 FFDC 环境而不是创建自己的一个 FFDC 环境。
fcinit 在结束时返回下列退出状态代码:
fcinit 在检测到一个故障时,返回下列退出状态代码:
Korn shell 脚本要建立一个基本 FFDC 环境,仅用来使用 AIX 错误日志和 BSD 系统日志(没有使用或保存一个 FFDC 错误堆栈):
# Set up an FFDC Environment to use the AIX Error Log only. An FFDC Error # Stack is not needed for this script. . fcinit.sh -1 rc=$? if ((rc != 0)) then print "fcinit failed with exit code of $rc" exit 1 fi # Normal processing starts
某一 Korn shell 脚本要建立一个 FFDC 错误堆栈环境,该环境会导致脚本程序以及任何派生进程在 FFDC 错误堆栈中记录故障信息:
# Set up FFDC Environment to record failure information to the FFDC Error # Stack . fcinit.sh -sc rc=$? if ((rc != 0)) then print "fcinit failed with a code of $rc" exit 1 fi # Normal processing starts
要从进程的父进程继承一个 FFDC 错误堆栈环境:
# Inherit an FFDC Environment from parent process if it exists - otherwise, # operate in a normal "silent" mode . fcinit.sh -si rc=$? if ((rc != 0)) then print "fcinit failed with a code of $rc" exit 1 fi # Normal processing starts
命令:fccheck、fclogerr、fcpushstk 和 fcteststk
子例程:fc_init (请参考 RSCT 首次故障数据捕捉编程指南和参考大全)