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

StackOverflow https://stackoverflow.com/questions/603212

  •  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 строке при выводе приведенной выше команды.Возможно, было бы полезно применить проверку в вашем скрипте на основе этих результатов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top