fcinit 命令

用途

建立或继承一个首次故障数据捕捉执行环境。

语法

对于 Bourne 和 Korn shell
 /opt/rsct/bin/fcinit.sh [ [ -l ] [ -s {c | i } ] ] | [ -h ]
对于 C shell
source /opt/rsct/bin/fcinit.csh [ [ -l ] [ -s { c | i } ] ] | [ -h ]

描述

希望使用 FFDC 接口向AIX错误日志、BSD 系统日志或 FFDC 错误堆栈记录信息的脚本程序必须使用此接口。

应用程序可能由于下列原因之一而需要建立 FFDC 环境:

  • 脚本可能想要将信息记录到AIX错误日志。 脚本可以使用fcinit建立基本的 FFDC 环境
  • 脚本程序希望其自身以及自身或自身的子程序所创建的任何派生进程能在 FFDC 错误堆栈中记录故障信息。 在这种情况下,脚本将自己视为一个“顶级”应用程序,它会导致创建多个“低级”应用程序,“顶级”应用程序的成功取决于这些“低级”应用程序的成功。 当以这种方式使用 fcinit 命令时,那么称进程建立 创建了 FFDC 错误堆栈环境。
  • 仅当脚本被祖先进程调用且需要记录到这些设备的故障信息或跟踪信息时,该脚本才使用 FFDC 错误堆栈或 FFDC 跟踪。 在其他情况下,脚本程序并不希望使用这些设备。 使用时fcinit以这种方式,这个过程被称为继承FFDC 错误堆栈环境。

任何希望通过 FFDC 接口将信息记录到 AIX 错误日志或 BSD 系统日志的进程都必须建立 FFDC 环境。 如果该进程不想使用一个 FFDC 错误堆栈,那么该进程能建立一个不使用 FFDC 错误堆栈的基本 FFDC 环境。 当某个进程想将来自自身或者自身所创建的线程以及它所创建的任何派生进程的故障信息记录在一个 FFDC 错误堆栈中时,该进程将建立一个包含 FFDC 错误堆栈的 FFDC 错误堆栈环境。 一个FFDC 错误堆栈环境,其中包含一个 FFDC 错误堆栈,仅当进程的祖先之一被请求这样做时,该进程才想要将故障信息记录到 FFDC 错误堆栈文件中,才会继承该 FFDC 错误堆栈;在所有其他情况下,该进程都不会将故障信息记录到 FFDC 错误堆栈中。

FFDC 错误堆栈环境包含一个 FFDC 错误堆栈,它保留一个 FFDC 错误堆栈文件,以便将故障信息记录到/var/adm/ffdc/stacks目录。 这些文件使用命名格式script_name.PID.date_and_time, 在哪里脚本名称是脚本本身的名称, PID是脚本的进程标识符,并且日期和时间是执行脚本的日期和时间。 每当此脚本或其子进程向 FFDC 错误堆栈记录失败信息时,都会记录在此文件中。

为了使进程能够将信息记录到 FFDC 错误堆栈中,该进程必须使用fcpushstkFFDC 接口,并且该过程必须在已建立的 FFDC 错误堆栈环境中运行。 如果 FFDC 错误堆栈环境不存在,或者fcpushstk当 FFDC 错误堆栈环境存在时,如果未使用接口,则该进程不会在 FFDC 错误堆栈中记录任何信息。 当不需要故障调试信息时,该功能可以使进程处于正常或“安静”方式,而且当在一个特定环境中调用进程进行调试时,使用该功能也可以获得信息。

fcinit必须在 FFDC 客户端的进程环境中执行(sourced ) 命令来为脚本正确设置 FFDC 环境。 基于脚本的 FFDC 客户端使用此命令必须“获取”命令fcinit在客户端的进程映像中执行。 如果不这样做,FFDC 接口将在其自己的过程映像中执行;FFDC 接口完成后,FFDC 环境的任何设置都将丢失。 为了演示基于脚本的应用程序如何sourcefcinit命令,Korn Shell 程序可以发出以下指令:

. fcinit.sh <options and arguments>

AC Shell脚本可以执行以下操作:

source fcinit.csh <options and arguments>

使用 fclogerr FFDC 接口的进程必须建立一个 FFDC 环境。 如果进程仅希望使用 fclogerr 接口,那么可以建立一个没有 FFDC 错误堆栈的 FFDC 环境。

如果当脚本尝试创建 FFDC 环境时该环境已经存在,则该脚本将继承现有的 FFDC 环境而不是创建自己的 FFDC 环境。

标志

-h
在标准输出设备上显示帮助消息并退出。 不管指定什么选项,都不执行其他处理。
-l
表示该进程想要利用AIX仅错误日志。 此选项不是必需的,当-s指定选项,因为使用AIXFFDC 错误堆栈环境中允许使用错误日志。
-s
指示要建立一个 FFDC 错误堆栈环境。 希望使用fcpushstk接口必须指定此标志。 当此命令成功完成时,会为 /var/adm/ffdc/stacks 目录中的脚本程序保存一个 FFDC 错误堆栈文件。 此标志必须指定为下面两个可能的选项之一:
c
请求 FFDC 错误堆栈环境创建。 如果祖先进程未创建 FFDC 错误堆栈环境,则将创建该环境。 如果这样的环境先前由祖先进程创建,则该进程将继承FFDC 错误堆栈环境i已指定选项。
i
如果一个祖先进程以前建立了一个 FFDC 错误堆栈环境,那么指定该环境要被继承 。 如果先前未由祖代进程建立 FFDC 错误堆栈环境,那么不会为此进程建立 FFDC 错误堆栈环境,并且此进程无法使用 FFDC 错误堆栈 (尽管它可以使用 AIX 错误日志和 BSD 系统日志)。

参数

file_name
用于搜索一个 FFDC 故障标识的文件名。 可能提供多个文件。 如果没有给出文件名,那么 fcfilter 从标准输入中读入。

退出状态

fcinit 在结束时返回以下退出状态代码:

重大安全事件数量
成功建立了 FFDC 环境。
第 1 年
成功继承了 FFDC 环境。
2
显示的帮助信息并结束处理。

fcinit 在检测到一个故障时,返回以下退出状态代码:

12
未建立或继承的 FFDC 环境 — 提供了未知的函数参数。
13
未建立或继承的 FFDC 错误堆栈环境 — 调用者指出 FFDC 环境必须被创建和继承。
14
在调用中没有建立 FFDC 环境 - 调用者已经有一个为其建立的 FFDC 环境 - 该例程可能已经执行了多次。
15
未建立或继承的 FFDC 错误堆栈环境 — FFDC 错误堆栈环境不存在,并且指定了 FC_INHERIT 选项。
16
未建立或继承的 FFDC 环境 — 客户端的进程环境可能不会由此例程进行修改。
17
未建立或继承的 FFDC 环境 —— FFDC 环境似乎已损坏,必须视为不可用。
18
未建立或继承的 FFDC 环境 —— 例程可能不分配修改客户机进程环境所需的内存。
19
未建立或继承的 FFDC 错误堆栈环境 — 无法为调用进程保留 FFDC 错误堆栈文件 — FFDC 错误堆栈目录不存在或无法使用。
21
未建立或继承的 FFDC 错误堆栈环境 - 无法为调用进程保留 FFDC 错误堆栈文件 - 该文件存在
42
未建立或继承的 FFDC 错误堆栈环境 — 系统管理员已禁止创建和使用 FFDC 错误堆栈。 脚本只能建立使用 AIX 错误日志和 BSD 系统日志的基本 FFDC 环境。
99
未建立或继承的 FFDC 环境 - 发生意外的内部故障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 客户端可能会收到一个指示,表明 FFDC 错误堆栈环境是继承的,而不是由fcinit称呼。 这种情形发生在该进程的祖先之一已经建立了一个 FFDC 错误堆栈环境的情况下。

要从进程的父进程继承一个 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

实现细节

此命令是 Reliable Scalable Cluster Technology (RSCT) 文件集的一部分。