2009-03-02 8 views
5

Un script shell installe et configure certains services et applications dans une instance Solaris. L'un de ces services est NTP - mais NTP ne peut pas fonctionner dans une zone non globale (eh bien, mais xntpd échoue quand il essaie d'ajuster l'horloge, mais la zone hérite de l'heure de la zone globale). Comment un script shell peut-il indiquer qu'il s'exécute effectivement dans une zone Solaris non globale, de sorte qu'il peut ignorer l'étape de configuration NTP dans ces cas?Comment un script shell peut-il savoir qu'il s'exécute dans une zone Solaris?

Répondre

5

Utilisez zonename(1). Dans la zone globale (ou sur un serveur autonome sans zone), la chaîne global est renvoyée.

NAME 
    zonename - print name of current zone 

SYNOPSIS 
    zonename 

DESCRIPTION 
    The zonename utility prints the name of the current zone. 

... 
1

Vous pouvez également essayer zoneadm list -cv, dans la zone globale, vous verrez comme sortie:

# zoneadm list -cv 
ID NAME    STATUS   PATH 
0 global   running  /
1 zone1   running  /zones/zone1 

alors que dans toute autre zone que vous ne verriez cette zone particulière, par exemple

# zoneadm list -cv 
ID NAME    STATUS   PATH 
1 zone1   running  /zones/zone1 
1

Eh bien, si vous exécutiez le script dans la zone et de vouloir pour vous assurer qu'il est en cours d'exécution sur la zone puis exécutez ci-dessous commande

arp -a |grep SP 

Vous pouvez voir votre zone globale en 1 ligne en sortie ci-dessus commander. Il peut être utile d'appliquer check dans votre script sur la base de cette sortie.