2009-03-02 10 views
5

Uno script di shell installa e configura alcuni servizi e applicazioni in un'istanza di Solaris. Uno di questi servizi è NTP, ma NTP non può essere eseguito in una zona non globale (beh, ma xntpd non riesce quando tenta di regolare l'orologio, invece la zona eredita l'ora dalla zona globale).Come può uno script di shell sapere che viene eseguito in una zona Solaris?

Come può uno script di shell dire che è effettivamente in esecuzione in una zona Solaris non globale, in modo che possa saltare il passaggio di configurazione NTP in questi casi?

risposta

5

Utilizzare zonename(1). Nella zona globale (o su un server autonomo senza zone), verrà restituita la stringa global.

NAME 
    zonename - print name of current zone 

SYNOPSIS 
    zonename 

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

... 
1

Si potrebbe anche provare zoneadm list -cv, nella zona globale si vedrà l'uscita del tipo:

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

mentre in qualsiasi altra zona si vedrebbe solo quella particolare zona, per esempio

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

Beh, se si esegue lo script all'interno della zona e che vogliono assicurarsi che sia in esecuzione su zona quindi si esegue sotto comando

arp -a |grep SP 

Potete vedere il vostro zona globale in 1 linea in uscita di sopra comando. Potrebbe essere utile applicare il check in allo script sulla base di questo output.

Problemi correlati