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".