Wie kann ein Shell -Skript wissen, dass es in einer Solaris -Zone ausgeführt wird?
-
03-07-2019 - |
Frage
Ein Shell -Skript installiert und konfiguriert einige Dienste und Anwendungen in einer Solaris -Instanz. Eines dieser Dienste ist NTP - aber NTP kann nicht in einer nicht -globalen Zone ausgeführt werden (na ja es kann es können, aber XNTPD versetzt, wenn es versucht, die Uhr anzupassen; stattdessen erbt die Zone die Zeit aus der globalen Zone).
Wie kann ein Shell-Skript sagen, dass es tatsächlich in einer nicht-globalen Solaris-Zone ausgeführt wird, damit es in diesen Fällen den NTP-Konfigurationsschritt überspringen kann?
Lösung
Verwenden zonename(1)
. In der globalen Zone (oder auf einem eigenständigen Server ohne Zonen) wird die Zeichenfolge zurückgegeben global
.
NAME
zonename - print name of current zone
SYNOPSIS
zonename
DESCRIPTION
The zonename utility prints the name of the current zone.
...
Andere Tipps
Sie könnten es auch versuchen zoneadm list -cv
, In der globalen Zone sehen Sie die Ausgabe wie:
# zoneadm list -cv
ID NAME STATUS PATH
0 global running /
1 zone1 running /zones/zone1
Während Sie in einer anderen Zone nur diese bestimmte Zone sehen würden, z. B.
# zoneadm list -cv
ID NAME STATUS PATH
1 zone1 running /zones/zone1
Nun, wenn Sie ein Skript in der Zone ausführen und sicherstellen möchten, dass es in der Zone ausgeführt wird, laufen Sie unter dem Befehl unter dem Befehl
arp -a |grep SP
Sie können Ihre globale Zone in 1 Zeile unter Ausgabe des obigen Befehls sehen. Es kann nützlich sein, Ihr Skript auf die Basis dieser Ausgabe einzubeziehen.