2009-03-02 1 views
5

Скрипт оболочки устанавливает и настраивает некоторые службы и приложения в экземпляре Solaris. Одна из этих служб - NTP, но NTP не может работать в неглобальной зоне (ну, может, но xntpd терпит неудачу, когда он пытается настроить часы, а зона наследует время из глобальной зоны).Как скрипт может знать, что он работает в зоне Solaris?

Как скрипт оболочки может сказать, что он действительно работает в неглобальной зоне Solaris, чтобы он мог пропустить шаг конфигурации NTP в этих случаях?

ответ

5

zonename(1). В глобальной зоне (или на автономном сервере без каких-либо зон) это вернет строку global.

NAME 
    zonename - print name of current zone 

SYNOPSIS 
    zonename 

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

... 
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 
1

Ну, если вы работаете скрипт внутри зоны и хочет, чтобы убедиться, что он работает на зоне, то запустите следующую команду

arp -a |grep SP 

Вы можете увидеть вашу глобальную зону в 1 линии на выходе выше команда. Возможно, было бы полезно применить проверку в вашем скрипте на основе этого вывода.