snap 命令

用途

收集系统配置信息。

语法

[-@]-a ' ] [ '-z'"product_name=prd_name,..."| "class=myclass,..."' | '所有' ] [ '-M' '超时] [ '-A ' ] [ '-b ] [ '-B' ] [ '-c ] [ '-C' ] [ ''-D ] [ '-f ] [ '-F' ] [ '-g ] [ '-G [ '-i] [ '-k ] [ '-l ] [ '-L ][ '-n ] [ '-N ] [ '-p ] [ '-r ] [ '-R ] [ '-s ] [ '-S] [ '-t ] [ '-T '文件名][ '-u'user1 、....] [ '-w ] [ '-X] [ '-Y] [ '-o 'OutputDevice] [ '-d'主任] [ '-v '组件] [ '-O'FileSplitSize] [ '-P'文件] [ 'script1 script2... | 全部 | 文件:'文件路径' ] [ '-U] ..

snap -e [ -m Nodelist ] [-d Dir ]

snap -z ADD["product_name=prod_name" "class=myclass" "/tmp/myprod_myscript -a"]

snap -z DELETE ["product_name = prod_name" ]

描述

snap 命令收集系统配置信息并将信息压缩到 pax 文件中。 此文件可能会写入设备(例如,磁带或 DVD),或传输到远程系统。 也许需要用 snap 命令收集的信息来识别并解决系统问题。
注: 需要 root 用户权限才能执行 snap 命令。 使用 snap -o /dev/cd0 命令将压缩图像复制到 DVD。 使用 snap -o /dev/rmt0 命令将图像复制到磁带上。

使用 snap -o /dev/rfd0 命令将压缩图像复制到软盘上。 使用 snap -o /dev/rmt0 命令将图像复制到磁带上。

至少需要 8 MB 临时磁盘空间来收集所有的系统信息,其中包括错误日志的内容。 如果不使用 snap -a 命令收集所有的系统信息,可能只需要较少的磁盘空间(取决于选择的选项)。
注意:如果要使用磁带向IBM发送快照映像以获得软件支持,磁带必须是以下格式之一:
  • 8 毫米,2.3 GB 容量
  • 8 毫米,5.0 GB 容量
  • 4 毫米,4.0 GB 容量

使用其他格式会阻止或延迟 IBM 软件支持人员能够检查内容。

snap -g 命令收集常规系统信息,包括以下信息:

  • 错误报告
  • 定制对象数据管理器(ODM)数据库的副本
  • 跟踪文件
  • 用户环境
  • 物理内存和调页空间的数量
  • 设备和属性信息
  • 安全性用户信息
  • 系统的配置和调整参数信息

snap -g 命令的输出写入 /tmp/ibmsupt/general/general.snap 文件中。

snap 命令检查 /tmp/ibmsupt 目录中的可用的空间,此目录是 snap 命令输出的缺省目录。 可使用 -d 标志将输出写入另一个目录中。 如果没有足够的空间来存放 snap 命令的输出,那么您必须扩展文件系统。

snap 命令的每一次执行都会将信息附加到以前创建的文件中。 使用 -r 标志除去以前收集并保存过的信息。

标志

描述
-@ 收集工作负载分区信息。
-a 收集除特定于 HACMP 的数据以外的所有系统配置信息。 要收集HACMP特定数据,请运行snap-e选项。

将执行外部产品的已注册调试数据脚本的收集,并且其数据也包含在系统配置中,并且可以通过使用 -z 标志指定所选产品的名称来对其进行限制。

-a 选项至少需要 8 MB 临时磁盘空间。

-A 收集异步(TTY)信息。
-b 收集 SSA 信息。
-B 绕过 SSA 适配器转储集合。 -B 标志仅在同时指定了 -b 标志的情况下才起作用,否则请忽略 -B 标志。
-c 创建压缩的 pax 映像 (snap.pax.gz)。
注: 在使用 -c 标志之前,必须将未使用此选项收集的信息复制到 snap 目录树。 如果需要测试用例来演示系统问题,请将测试用例复制到 /tmp/ibmsupt/testcase 目录,然后再压缩 pax 文件。 用户定义的任何目录都必须保存在 snap 命令的 /tmp/ibmsupt/other 目录中以进行压缩。
-C 检索 fwdump_dir 目录中的所有文件。 这些文件位于“general”子目录中。 -C snap 选项的作用与 -P* 相同。
-D 收集转储和 /unix 信息。 使用主要的转储设备。
注意:
  1. 如果使用 bosboot -k 指定非 /unix 的运行内核,就会收集到不正确的内核。 当转储时,请确保 /unix 是正在使用的内核或者连接到正在使用的内核。
  2. 如果将转储文件复制到主机机器上,那么 snap 命令不能收集 /tmp/ibmsupt/dump 目录中的转储图像。 相反,它创建转储目录和实际转储图像的链接。
-d AbsolutePath 标识可选的 snap 命令输出目录(/tmp/ibmsupt 是缺省目录)。 必须指定绝对路径。
-e 收集特定于 HACMP 的信息。
注: 将从属于集群的所有节点收集特定于 HACMP 的数据。 该标志不能与除 -m-d 外的任何其他标志一起使用。
-f 收集文件系统信息。
-f 收集 flash 适配器信息。
-g 收集 lslpp -hac 命令的输出,该命令对于重新创建确切的操作系统环境是必需的。 将输出写入 /tmp/ibmsupt/general/lslpp.hac 文件。 也收集常规系统信息并将输出写入 /tmp/ibmsupt/general/general.snap 文件中。
-g -g 标志将预定义的对象数据管理器(ODM)文件包含到收集到的常规信息中。
-i 收集安装调试重要产品数据(VPD)信息。
-k 收集内核信息
-l 收集编程语言信息。
-L 收集 LVM 信息。
-m 节点列表 用于收集 HACMP 信息的节点名列表 (以逗号分隔)。
注: 当前此标志仅对 -e 标志有效。
-M 超时 指定 snap 框架在终止一个已注册外部产品调试数据命令之前等待的最大超时值(以秒计)。 缺省超时值为 300 秒。
-n 收集网络文件系统(NFS)信息。
-N 禁止检查必需的可用空间。
-o OutputDevice 将压缩图像复制到指定设备上。
-O FileSplitSize 用于支持将 snap 输出文件拆分为更小的文件。 这些文件的大小指定为 -O 选项的参数,并且必须以兆字节为单位指定。 仅当指定了 -c 标志时,才能使用此标志。
-p 收集打印机信息。
-P 文件 fwdump_dir 目录检索指定的 文件 。 如果指定了 -P *,将收集该目录中的所有文件。 这些文件放置在 general 子目录中。 -C snap 选项的行为与 -P*相同。
-r /tmp/ibmsupt 目录中除去 snap 命令的输出。
-R 收集 SCSI RAID 信息。
-s 收集“系统网络体系结构”(SNA)信息。
-S -g 标志将安全性文件包含到收集到的一般信息中。
-t 收集传输控制协议信息。
-T 文件名 为多个 CPU 跟踪收集所有日志文件。 -g 标志只收集库文件 trcfile
-u user1,user2... 指定要收集其 shell 和系统管理界面工具 (SMIT) 历史记录的用户名,以逗号分隔。
-v 组件 显示 snap 命令所执行的命令的输出。 使用该标志查看指定的文件名称或文件组。
注: 按 Ctrl-C 键序列以中断 snap 命令。 返回带有下列选项的提示:按下 Enter 键返回到当前操作;按下 S 键停止当前操作;按下 Q 键完全退出 snap 命令。
-w 收集 WLM 信息。
-X 收集 X.25(基于包的通信协议)信息。
-y 收集 InfiniBand 信息,并将其保存在 /tmp/ibmsupt/IB 目录中。
-z 促进外部产品的调试数据收集。
  • ADD 关键字允许外部产品向 snap 框架注册其调试数据收集脚本。
  • DELETE 关键字允许外部产品从 snap 框架注销其调试数据收集脚本。

将产品名称作为参数指定给 product_name 属性时,会执行已注册的调试数据收集命令。 要收集多个产品的数据,请在 product_name 属性中指定所需的产品名称。

将类名作为参数指定给 class 属性时,会执行该类中所有产品的已注册调试命令。 要收集多个类的数据,请在 class 属性中指定所需的类名。

ALL 指定为参数时,会执行所有类中所有产品的已注册调试数据收集命令。

当任何脚本执行时,系统会将产品名称附加至 SNAPDEBUGDATA 环境变量所指向的列表。

-U 收集实时内核更新信息,并将其保存在 /tmp/ibmsupt/liveupdate 目录中。

参数

Arguments

要执行的第三方脚本的名称指定为 snap的参数。 参数可以是单字,也可以是加引号的字的列表。 参数被括在引号中时,列表中第一个参数表示脚本名称,后续的字表示传递到脚本的参数。

All 指定为参数时,将执行脚本存储库中的所有脚本。 在此情况下不会传递任何脚本参数。

如果使用 file: 关键字并紧跟在文件的路径后面,那么将读取该文件以获取要执行的脚本。 文件的每一行都表示一个脚本和脚本的可选参数。

snap 脚本

第三方脚本必须在 /usr/lib/ras/snapscripts中可执行,并且必须遵循以下描述的准则。 在传递 1 期间调用时,脚本必须将其大小估计返回到 snap。 在传递 2 时,它将收集数据并按 snap的指定进行保存。

脚本必须读取并利用以下环境变量:SNAPDIR、PASSNO、SCRIPTSIZE 和 SCRIPTLOG。

这些脚本或命令也可以使用 SNAPDEBUGDATA 变量来了解 snap 脚本所收集的调试数据。 此变量具有以逗号分隔的产品名称,snap 命令会在执行期间收集这些产品的数据。

必须将所有输出文件写入 $SNAPDIR。 它是脚本应该保存其输出的目录。 PASSNO 变量包含调用脚本的 snap 阶段。 在第一个阶段中,脚本应该计算出第二个阶段中它将写入的数据的大小估计值。 然后,它将此数字估计值写入 $SCRIPTSIZE 指向的文件。 保存到该文件中的值应采用十进制。 snap 将路径传递到应该保存脚本的所有调试数据的日志文件。 脚本不应重定向标准输出和标准错误,因为 "snap会将标准输出和标准错误分别保存到 $SNAPDIR '/'脚本名称'.out和 $SNAPDIR '/'脚本名称'.err 中。

以下示例显示了 snap 脚本:
#!/usr/bin/ksh


if [ "$PASSNO" = 1 ]
then
         (( size=99999 ))
        .... 
        # this is where code to do the size estimation should go.
        ....
        echo $size > $SCRIPTSIZE

else if [ "$PASSNO" = 2 ]
then
        # debug information should go to $SCRIPTLOG
        echo "Debug Data" >> $SCRIPTLOG

        # .....where the work to collect the data takes place
        # ...

        # The data collected should be written to $SNAPDIR        .
        touch $SNAPDIR/foo_output1
        touch $SNAPDIR/foo_output2
fi
fi
注: 要收集有关虚拟 SCSI 设备的信息,请运行 snap client_collect , all 命令。 如果需要从虚拟 I/O 服务器收集数据,请参阅虚拟 I/O 服务器上的snap命令页面,该页面使用的语法与AIX 上的snap命令不同。
当您运行带有 -a-g 标志的 snap 命令时,可以运行下列脚本:
  • 在运行命令并指定 -a 标志时:svCollect、client_collect 和 lsvirt
  • 在运行命令并指定 -g 标志时:svCollect 和 client_collect

分割 snap 输出

如果拆分,那么 snap 输出可能如下所示:

% ls -l
total 112048
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.hastings.020122055925.pax.gzaaa
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.hastings.020122055925.pax.gzaab
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.hastings.020122055925.pax.gzaac
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.hastings.020122055925.pax.gzaad
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.hastings.020122055925.pax.gzaae
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.hastings.020122055925.pax.gzaaf
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.fvt-zz4-lp3.020122055925.pax.gzaag
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.fvt-zz4-lp3.020122055925.pax.gzaah
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.fvt-zz4-lp3.020122055925.pax.gzaai
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.fvt-zz4-lp3.020122055925.pax.gzaaj
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.fvt-zz4-lp3.020122055925.pax.gzaak
-rw-------   1 root     system         3145728 Feb 01 05:59 snap.fvt-zz4-lp3.020122055925.pax.gzaal
-rw-------   1 root     system         2234613 Feb 01 05:59 snap.fvt-zz4-lp3.020122055925.pax.gzaam

执行第三方脚本

外部产品调试数据收集命令或脚本是独立的可执行文件。 该脚本必须先向 snap 框架注册,然后才能用来收集用户定义的调试数据。 用户可以酌情注销这些脚本。

以下是系统中定义的 ODM 类。

#define DEFAULTSIZE 256
#define DATA_VALUESIZE 1024

class snap_config {
        char product_name[DEFAULTSIZE]; key
        char class[DEFAULTSIZE];key
        char command_path[DATA_VALUESIZE];
        vchar sc_reserved1[DATA_VALUESIZE];
        vchar sc_reserved2[DATA_VALUESIZE];
}
product_name
指定产品的名称。 在注销产品调试数据收集脚本时使用同一个名称。
class
类可以是存储器、网络或数据库。 可以根据产品选择相应的类,也可以定义您自己的类。 类可帮助对产品进行分类。 用户可以联系IBM®服务人员,在snap文档中添加任何其他类。
command_path
命令或可执行文件的路径,连同命令或可执行文件的选项。 sc_reserved1sc_reserved2 已保留。

向 Snap 框架注册第三方调试脚本

可通过以下两种方式进行注册:
  1. 可以显式地运行 odmadd 命令以添加条目。 在这种情况下:
    • 必须将脚本或可执行文件复制到 /usr/lib/ras/snapscript/bin/<productname> 目录。
    要点
    1. 需要先输入该命令,再执行 odmadd
      export ODMDIR=/usr/lib/objrepos
    2. odmadd 命令完成执行后,您可以恢复 ODMDIR 命令的旧值。
    3. 可以继续运行 snap 命令。 例如,myfile 的内容如下所示:
      product_name=myprod
      class=myclass
      command_path=/usr/lib/ras/snapscripts/bin/prod_name/myscript1.sh -t 10
      export ODMDIR=/usr/lib/objrepos
      odmadd myfile
    注: 直接输入 ODM 的用户必须处理重复的条目,因为 snap 命令仅处理特定产品名称的一个条目。 因此,必须先执行 odmdelete 命令,再调用 odmadd 命令。
  2. ADD 关键字与 -z 标志配合使用。
注意:
  • 1. 如果调试二进制数据已更改或更新,那么用户必须重新注册组件以更新 snap 存储库来使用最新的二进制数据。
  • 2. 不支持在 command_path 变量中将多个命令组合使用。 例如,不支持以下格式:
    command_path=<path>/ls|<path>/grep myfile 
  • 3。不支持将特殊字符 (例如 '<| ) 作为 命令路径 变量的值。

从 Snap 框架注销第三方调试脚本

可通过以下两种方式进行注销:
  1. 使用 odmdelete 命令来注销产品。 例如,
    export ODMDIR=/usr/lib/objrepos
    odmdelete -o snap_config -q product_name=productname
  2. DELETE 关键字与 -z 标志配合使用。 例如,
    Snap -z DELETE product_name=productname

示例

  1. 输入下列命令收集所有的系统配置信息:
    snap -a
    该命令的输出写入 /tmp/ibmsupt 目录中。
  2. 输入以下命令创建 /tmp/ibmsupt 目录中包含的所有文件的 pax 映像:
    snap -c
  3. 输入以下命令收集常规系统配置信息,包括 lslpp -hac 命令的输出:
    snap -g -o /dev/rfd0
    输出将写入 /tmp/ibmsupt/general/lslpp.hac/tmp/ibmsupt/general/general.snap 文件。 该命令也将系统信息写入可拆卸的软盘中。
  4. 输入以下命令以从属于单个集群的节点 node1node2 收集特定于 HACMP 的信息:
    snap -e -m node1,node2
    输出写入 /tmp/ibmsupt/hacmp 目录中。
  5. 要运行脚本 foo1、foo2 和 foo3(其中 foo1 不带自变量,foo2 带有三个自变量,foo3 带有一个自变量),请输入以下内容:
    snap  foo1 "foo2 -x -y 3" "foo3 6"
    输出将写入 /tmp/ibmsupt/snapscripts/foo1/tmp/ibmsupt/snapscripts/foo2/tmp/ibmsupt/snapscripts/foo3 ,假定目标目录是缺省目录 /tmp/ibmsupt
  6. 要指定 All 参数以运行所有脚本,请输入:
    snap All
    注: 在这种情况下,不会传递任何参数。
  7. 要指定文件(其包含将执行的脚本的名称和可选参数列表)的路径,请输入:
    snap file:/tmp/scriptnames
    一个从示例 5 执行脚本的样本输入文件:
    foo1 
    foo2 -x -y 3
    foo6
  8. 如果需要将 snap 输出拆分为 4MB 文件,请输入:
    snap -a -c -O 4
  9. 要仅提交来自节点 node1node2的 HACMP snap -e 数据,请输入以下命令:
    snap -e -m node1,node2
    snap -c

    将 < pax.gz > 文件提交到 IBM 按照服务代表的指示提交文件。

  10. 要从节点 node1node2提交所有 snap 数据,请输入以下命令:
    snap -e -m node1,node2
    snap -a
    snap -c 

    将 < pax.gz > 文件提交到 IBM 按照服务代表的指示提交文件。

  11. 要注册产品 abc/usr/lpp/abc/debug_abc 目录中存在的调试脚本,请在类 storage 中输入以下命令:
    snap -z ADD "product_name=abc" "class=storage" "command_path=/usr/lpp/abc/debug_abc -a"
  12. 要注销产品 abc 的调试脚本,请输入以下命令:
    snap -z DELETE "product_name=abc"
  13. 要收集多个产品的调试数据,请输入以下命令:
    snap -z "product_name=abc, product_name=def"

文件

描述
/usr/sbin/snap 包含 snap 命令。
/tmp/ibmsupt 包含 snap 命令的输出。
/tmp/ibmsupt/general/lslpp.hac 包含 lslpp -hac 命令的输出,该命令对于重新创建确切的操作系统环境是必需的。
/tmp/ibmsupt/general/general.snap 包含用 snap -g 命令收集到的常规系统信息。
/tmp/ibmsupt/testcase 包含演示您的系统问题的测试用例。
/tmp/ibmsupt/other 包含用户定义的目录。