Как скрипт оболочки может знать, что он работает в зоне Solaris?


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

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

3 5

3 ответа:

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

NAME
   zonename - print name of current zone

SYNOPSIS
   zonename

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

...

Вы также можете попробовать 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

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

arp -a |grep SP

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