シェル スクリプトは、一部のサービスとアプリケーションを Solaris インスタンスにインストールして構成します。これらのサービスの 1 つは NTP ですが、NTP は非大域ゾーンでは実行できません (実行できますが、クロックを調整しようとすると xntpd が失敗します。代わりに、ゾーンは大域ゾーンから時刻を継承します)。
シェル スクリプトは、実際に非大域 Solaris ゾーンで実行されていることをどのように伝え、そのような場合に NTP 構成手順をスキップできるのでしょうか?
シェル スクリプトは、一部のサービスとアプリケーションを Solaris インスタンスにインストールして構成します。これらのサービスの 1 つは NTP ですが、NTP は非大域ゾーンでは実行できません (実行できますが、クロックを調整しようとすると xntpd が失敗します。代わりに、ゾーンは大域ゾーンから時刻を継承します)。
シェル スクリプトは、実際に非大域 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.
...
さて、ゾーン内でスクリプトを実行していて、それがゾーンで実行されていることを確認したい場合は、以下のコマンドを実行します
arp -a |grep SP
上記のコマンドの出力で、大域ゾーンを 1 行で確認できます。この出力に基づいてスクリプトにチェックを適用すると便利な場合があります。
を試すこともでき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