Как сценарий оболочки может узнать, что он выполняется в зоне Solaris?
-
03-07-2019 - |
Вопрос
Сценарий оболочки устанавливает и настраивает некоторые службы и приложения в экземпляре Solaris.Одной из этих служб является NTP, но NTP не может работать в неглобальной зоне (ну, может, но xntpd терпит неудачу при попытке настроить часы;вместо этого зона наследует время из глобальной зоны).
Как сценарий оболочки может определить, что он действительно работает в неглобальной зоне Solaris, чтобы в таких случаях можно было пропустить этап настройки NTP?
Решение
Использовать 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 строке при выводе приведенной выше команды.Возможно, было бы полезно применить проверку в вашем скрипте на основе этих результатов.