shell 脚本在 Solaris 实例中安装和配置一些服务和应用程序。其中一项服务是 NTP - 但 NTP 不能在非全局区域中运行(它可以,但 xntpd 在尝试调整时钟时失败;相反,该区域从全局区域继承时间)。
shell 脚本如何判断它确实在非全局 Solaris 区域中运行,以便在这些情况下跳过 NTP 配置步骤?
shell 脚本在 Solaris 实例中安装和配置一些服务和应用程序。其中一项服务是 NTP - 但 NTP 不能在非全局区域中运行(它可以,但 xntpd 在尝试调整时钟时失败;相反,该区域从全局区域继承时间)。
shell 脚本如何判断它确实在非全局 Solaris 区域中运行,以便在这些情况下跳过 NTP 配置步骤?
使用zonename(1)
. 在全局区域(或在没有任何区域的独立服务器上)中,这将返回字符串global
。
NAME
zonename - print name of current zone
SYNOPSIS
zonename
DESCRIPTION
The zonename utility prints the name of the current zone.
...
您也可以尝试zoneadm list -cv
,在全局区域中,您将看到如下输出:
# zoneadm list -cv
ID NAME STATUS PATH
0 global running /
1 zone1 running /zones/zone1
而在任何其他区域中,您只会看到该特定区域,例如
# zoneadm list -cv
ID NAME STATUS PATH
1 zone1 running /zones/zone1
好吧,如果您在区域内运行脚本并希望确保它在区域上运行,那么运行以下命令
arp -a |grep SP
您可以在上述命令的输出中的 1 行中看到您的全局区域。根据此输出在脚本中应用检查可能会很有用。