UNIX命令行工具的标准化
本文介绍用于标准化界面以简化在不同 UNIX® 系统之间移动的方法。如果您管理多种 UNIX 系统(特别是在异构环境中),则最艰巨的任务可能是在不同环境之间切换并执行不同的任务,同时还必须考虑系统之间的所有差异。本文并不介绍特定的差异,而是研究能够提供兼容层(或包装)以支持一致环境的方法。
关于本系列
典型的 UNIX® 管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍和系统。存在各种用于简化不同过程的关键实用工具、命令行链和脚本。其中一些工具来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员工作压力的要求。本系列文章主要专注于最大限度地利用各种 UNIX 环境中可用的工具,包括简化异构环境中的管理任务的方法。
差异和问题
如果您使用多种 UNIX 主机,特别是每种主机都支持不同的 UNIX 风格(Berkeley Software Distribution (BSD)、UNIX System Release 4 (VSVR4) 等)或版本,您也许发现自己要花大量的时间来检查和确定自己所在的主机类型,以便能够适应系统操作方式的变化。
例如,ps 命令在基于 BSD 和基于 SVR4 的 UNIX 主机上,分别需要不同的命令行选项来获得大致相同的信息(有关更多细节,请参阅 系统管理员工具包: 进程管理技巧)。平台之间还存在更广泛的差异。有时,这种差异是命令名称发生了更改;Linux® 提供 adduser 命令,而 Solaris 则提供 useradd 命令。
就标准化而言,有多种方法可供您采用。
您可以选择对主要平台(例如 Solaris)进行标准化,并在其他平台上提供等效命令的包装以匹配 Solaris 标准。
也可以选择对为所使用的任务提供最佳组合的命令集进行标准化,挑选您喜欢的命令并为特定平台上不存在的命令构建包装。
您可以创建自己的一套执行特定任务的脚本(包括您自己用于 ls、ps 等常用工具的替代脚本),以便它们生成您想要的信息。这样做有点危险,原因是它意味着您可能从未使用原始命令,从而可能在您的脚本不可用时导致潜在的问题。
如何具体实现各个命令的包装以提供一个兼容或唯一的层,这取决于您是尝试简单地为功能相同的替代命令提供一个公认名称,还是需要构建一个或多个命令的包装以获得等效的结果。可能的解决方案有三种:
别名——这种解决方案仅在某些外壳中受支持——别名提供了将给定的字符串展开为特定命令的简单方法。
外壳函数——大多数现代外壳都支持这种解决方案——外壳函数使您能够创建更复杂的序列,但是由于它们作为内置函数运行,在差异相当小时可能更为实用。
关于本系列
典型的 UNIX® 管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍和系统。存在各种用于简化不同过程的关键实用工具、命令行链和脚本。其中一些工具来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员工作压力的要求。本系列文章主要专注于最大限度地利用各种 UNIX 环境中可用的工具,包括简化异构环境中的管理任务的方法。
差异和问题
如果您使用多种 UNIX 主机,特别是每种主机都支持不同的 UNIX 风格(Berkeley Software Distribution (BSD)、UNIX System Release 4 (VSVR4) 等)或版本,您也许发现自己要花大量的时间来检查和确定自己所在的主机类型,以便能够适应系统操作方式的变化。
例如,ps 命令在基于 BSD 和基于 SVR4 的 UNIX 主机上,分别需要不同的命令行选项来获得大致相同的信息(有关更多细节,请参阅 系统管理员工具包: 进程管理技巧)。平台之间还存在更广泛的差异。有时,这种差异是命令名称发生了更改;Linux® 提供 adduser 命令,而 Solaris 则提供 useradd 命令。
就标准化而言,有多种方法可供您采用。
您可以选择对主要平台(例如 Solaris)进行标准化,并在其他平台上提供等效命令的包装以匹配 Solaris 标准。
也可以选择对为所使用的任务提供最佳组合的命令集进行标准化,挑选您喜欢的命令并为特定平台上不存在的命令构建包装。
您可以创建自己的一套执行特定任务的脚本(包括您自己用于 ls、ps 等常用工具的替代脚本),以便它们生成您想要的信息。这样做有点危险,原因是它意味着您可能从未使用原始命令,从而可能在您的脚本不可用时导致潜在的问题。
如何具体实现各个命令的包装以提供一个兼容或唯一的层,这取决于您是尝试简单地为功能相同的替代命令提供一个公认名称,还是需要构建一个或多个命令的包装以获得等效的结果。可能的解决方案有三种:
别名——这种解决方案仅在某些外壳中受支持——别名提供了将给定的字符串展开为特定命令的简单方法。
外壳函数——大多数现代外壳都支持这种解决方案——外壳函数使您能够创建更复杂的序列,但是由于它们作为内置函数运行,在差异相当小时可能更为实用。
相关推荐
yuzhongdelei0 2020-07-28
吹云 2020-11-05
84407805 2020-11-01
曾是土木人 2020-10-31
87201442 2020-10-15
java0 2020-09-29
81437716 2020-09-18
81437716 2020-09-13
bluecarrot 2020-09-11
myCat 2020-09-09
83427718 2020-09-07
85560694 2020-09-03
89520991 2020-08-21
89550191 2020-08-09
katie000 2020-08-04
hunningtu 2020-07-30
89961330 2020-07-28
yuzhongdelei0 2020-07-27