さくらクラウド

トップ > チップス > さくらクラウド
2015-09-02, sakura

スタートアップスクリプトの落とし穴

新たにサーバを作成する際、任意のシェルスクリプトを記述した「スタートアップスクリプト」を選択することにより、起動時にそれらを自動的に実行する機能です。

と「さくらのクラウド」ニュース記事にあるように、非常に便利な機能なのですが、落とし穴もあるようです。スクリプトの実体を掘り下げていくとrc.localに起動設定があって、スクリプトは/root下の隠しフォルダに格納されています。

/etc/rc.local
# sacloud startup
/root/.sacloud-api/startup.sh
# /sacloud startup

以下は抜粋です。設定したスクリプトは_run関数で実行されるのですが、こいつが「終了ステータス=0」で終わらない限り、最後の終了フラグ(.done)が生成されず、再起動の度にスタートアップスクリプトが起動してしまうことになります。

set -v
[ -f $1 ] && ! _not_to_run $1 && _run $1 && touch $1.done

余談ですが、起動シーケンスの終わりの方で謎の「date」っていう表記がポコッと漏れ出るのは「set -v」の副作用ですね。

参考URL

この記事は役に立ちましたか?