SMIT 命令生成和执行

系统管理界面工具 (SMIT) 中的每个对话框均构建和执行 标准命令版本。

对话框将要执行的命令是由定义对话框标题的 sm_cmd_hdr 对象中的 cmd_to_exec 描述符定义的。

生成对话框定义的任务

构建在 sm_cmd_hdr.cmd_to_exec 描述符中定义的命令的过程中,SMIT 对 sm_cmd_opt 对象 的对话框集合使用双向扫描以收集前缀和参数值。 收集的参数值包括用户从最初显示的值更改的参数值以及将 sm_cmd_opt.required 描述符设置为"y".

第一次传递将收集 sm_cmd_opt 对象的所有值 (按顺序) ,对于这些对象, prefix 描述符是空字符串 ("") 或者以-(减号)。 这些参数的位置不敏感,它们将被立即添加到命令名后与参数的 prefix 描述符的内容一起。

第二次传递将收集 prefix 描述符为其的其余 sm_cmd_opt 对象的所有值 (按顺序)(两个短划线)。 这些参数是位置敏感的,它们将被添加到在第一次操作收集到的标记选项后。

注意:SMIT 执行在 前缀字段中输入的内容的值。 如果前缀字段中的值为保留的 shell 字符(比如:*(星 号)),那么必须在字符后放置一个 —'(破折号破折号单引号)。 这样,当系统 评估字符时,它不会将该字符错误地理解成 shell 字符。

当其 sm_cmd_opt 对象的 disc_field_name 描述符与先前选择器或先前发现命令相匹配时,将会自动填充对话框中的命令参数值。 这些参数值为有效的缺省值,并且通常 不会被添加到命令行。 将 sm_cmd_opt.required 描述符初始化为"y""+"会将这些值添加到命令行,即使在对话框中未更改这些值也是如此。 如果 sm_cmd_opt.required 描述符值为"?",仅当关联的输入字段为非空时,才会使用相应的值。 将这些参数值作为定期两遍处理的一部分构建到命令行中。

sm_cmd_opt.entry_type 描述符设置为"r"。如果生成的参数值为空字符串,那么除非 sm_cmd_opt.prefix 描述符以选项标志开头,否则不会执行进一步的操作。 如果 prefix 描述符未设置为"—"(两个短划线)。 每个参数都被立即放置在相关前缀之后,不插入空格(如果有)。 此外,如果 multi_select 描述符设置为"m",在输入字段中以空格分隔的标记将被视为单独的参数。

执行对话框定义的任务

SMIT 通过首先创建子进程,运行在 sm_cmd_hdr.cmd_to_exec 描述符中指定的命令字符串。 按 sm_cmd_hdr.exec_mode 描述符的内容指定处理子进程的 标准错误和标准输出。 SMIT 接下来在子进程中运行 setenv("ENV=") 子例程,以防在用户 $HOME/.env 文件中指定的命令在新 shell 被调用时自动运行。 最后,SMIT 调用execl子程序启动kshshell,使用命令字符串作为ksh -c参数值。

SMIT 使日志文件的路径名和命令行详细、跟踪和调试标记的设置在其运行的命令的 shell 环境中可用。 这些值是通过以下环境变量提供的:

  • SMIT_LOG_FILE
  • _ SMIT_SCRIPT_FILE
  • _SMIT_VERBOSE_FLAG
  • _SMIT_TRACE_FLAG
  • _SMIT_DEBUG_FLAG

对应标记的出现或缺乏分别由值 0 或 1 指示。

此外,SMIT 环境变量提供了有关 哪个 SMIT 环境处于活动状态的信息。 SMIT 环境变量可具有以下值:

SMIT 环境
a 位于 ASCII 接口中的 SMIT
位于分布式 SMIT (DSMIT) 接口中的 SMIT
m 位于窗口(还称为图谱)接口中的 SMIT

查看当前设置的简便方法就是在启动 SMIT 后调用 shell 函数,然后运行命令字符串 env | grep SMIT

可通过设置环境变量 SMIT_SHELL=n 禁用功能键 F9=Shell。

对日志文件的所有编写应该在追加时执行,然后在不自动发生对齐的地方立即执行对齐操作。

您可以通过设置以下命令来覆盖 (子) 任务进程的 SMIT 缺省输出重定向:sm_cmd_hdr.exec_mode字段到"i". 此设置为任务提供输出管理控制,因为任务进程仅继承标准错误和标准输出文件描述符。

可以通过设置以下命令来使 SMIT 关闭并将其自身替换为目标任务:sm_cmd_hdr.exec_mode字段到"e".