Как дождаться загрузки зоны Solaris (первый раз)

Solaris 11.

Я обнаружил, что команда загрузки зоны (например, zoneadm -z myzone boot ) возвращается до полной загрузки / настройки зоны. Проблема связана с недавно созданными зонами.

Точнее, что я делаю:

 zoneadm -z myzone install -c mytemplate.xml zoneadm -z myzone boot 

Когда вторая строка заканчивается, система сообщает, что зона находится в рабочем состоянии (что технически верно). В действительности зона все еще занята, делая манифест импорта, т. Е. Выполняет первоначальную настройку. Поэтому на данный момент нет никакой гарантии, что артефакты, определенные в mytemplate.xml (например, пользователи), фактически будут существовать. Это, как правило, занимает дополнительную минуту или две.

Это проблема при создании сценариев в сценариях. Я, очевидно, могу очень долго sleep и надеюсь, что к тому времени зона завершит свои задачи настройки, но это похоже на глупое решение. Я не знаю, как долго ждать.

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

    2 Solutions collect form web for “Как дождаться загрузки зоны Solaris (первый раз)”

    Один из способов – использовать цикл while, который запускается

     zlogin <zone> svcs -xv 

    или

     zlogin <zone> svcs svc:/milestone/multi-user | grep online 

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

    Вторая команда может быть лучше, если вы регулярно оказываете неудачные услуги, требующие ручного вмешательства для исправления, поскольку ваш скрипт может зависать в противном случае. Вероятно, вы также должны иметь значение тайм-аута, чтобы ваш скрипт не вечно вел себя за неглобальным, который никогда не соответствует вашему состоянию.

    В моем тестировании я ожидал ненулевой код выхода, когда вывод из работы svcs -xv неудавшиеся службы, но код выхода равен нулю, поэтому имейте это в виду. По этой причине, если вы используете команду zlogin <zone> svcs -xv и вы хотите проверить код выхода, вам может быть лучше работать zlogin <zone> svcs -xv | grep State zlogin <zone> svcs -xv | grep State . Необязательный код выхода, который будет указывать на неудачные службы, и нулевой код выхода укажет некоторые неудачные службы.

    После недавно созданной зоны под Solaris 10 мне обычно нужно было войти в консоль зоны, чтобы ответить на несколько вопросов. zlogin -C <zonename>

    Linux и Unix - лучшая ОС в мире.