Solarisゾーンの起動を待つ方法(最初)

Solarisゾーンの起動を待つ方法(最初)

ソラリス 11.

zoneadm -z myzone bootゾーンが完全に開始/構成される前に、ゾーン開始コマンド(例えば)が返されたことがわかりました。この問題は、新しく作成された領域に関連しています。

より正確に言えば、私がしたことは次のとおりです。

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

2行目が完了すると、システムはリージョンが実行中であることを報告します(技術的には正確です)。実際、この領域はまだインベントリのインポート、つまり初期設定で忙しいです。したがって、現時点では、に定義された成果物(ユーザーなど)が実際に存在するという保証はありませんmytemplate.xml。通常1〜2分かかります。

これは、スクリプト領域を作成するときに発生する問題です。どうやら長い間これを行うことができましたが、sleepそれまでゾーンがその構成タスクを完了したことを願っていますが、これは愚かな解決策のようです。どのくらい待つべきかわかりません。

続行する前に、地域のバックグラウンド構成プロセスが完了したことを確認するスクリプト方法はありますか?

ベストアンサー1

1つの方法は、実行されるwhileループを使用することです。

zlogin <zone> svcs -xv

または

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

そして、これらのコマンドのいずれかの出力を使用して、その領域が準備されているかどうか、またはより長い時間省電力モードに切り替える必要があるかどうかを確認します。

修正のために手動介入が必要なサービスが頻繁に失敗する場合は、2番目のコマンドがより良い可能性があります。そうしないと、スクリプトが中断される可能性があります。スクリプトが条件を満たさない非大域変数を永久に待たないように、タイムアウト値も必要です。

私のテストでは、失敗したサービスの出力を実行したときにゼロ以外の終了コードが出ることを期待していましたが、終了svcs -xvコードはゼロでしたので注意してください。したがって、コマンドを使用zlogin <zone> svcs -xvして終了コードをテストするには、実行することをお勧めしますzlogin <zone> svcs -xv | grep State。ゼロ以外の終了コードは失敗したサービスがないことを示し、ゼロ終了コードは一部の失敗したサービスを示します。

おすすめ記事