Upstart は Canonical によって開発されたため、一時期 Ubuntu の init 実装でしたが、現在の Ubuntu インストールでは systemd が使用されています。Upstart は、厳密な起動プロセスやタスクのブロッキングなど、SysV の問題を改善するために作成されました。Upstart のイベント駆動およびジョブ駆動モデルにより、イベントが発生したときにそれに応答できます。
Upstart を使用しているかどうかを確認するには、/usr/share/upstart ディレクトリがあるかどうかを確認するのが良い指標となります。
ジョブは Upstart が実行するアクションであり、イベントはジョブをトリガーするために他のプロセスから受信されるメッセージです。ジョブとその設定の一覧を表示するには、次のコマンドを実行します。
pete@icebox:~$ ls /etc/init
acpid.conf mountnfs.sh.conf
alsa-restore.conf mtab.sh.conf
alsa-state.conf networking.conf
alsa-store.conf network-interface.conf
anacron.conf network-interface-container.conf
これらのジョブ構成内には、ジョブをいつどのように開始するかについての情報が含まれています。
例えば、networking.conf ファイルには、次のような簡単な記述があるかもしれません。
start on runlevel [235]
stop on runlevel [0]
これは、runlevel 2、3、または 5 でネットワーキングの設定を開始し、runlevel 0 でネットワーキングを停止することを意味します。構成ファイルの書き方には多くの方法があり、利用可能なさまざまなジョブ構成を確認するとそれがわかります。
Upstart の動作方法は次のとおりです。
- まず、
/etc/initからジョブ構成をロードします。 - 起動イベントが発生すると、そのイベントによってトリガーされるジョブを実行します。
- これらのジョブが新しいイベントを生成し、それらのイベントがさらに多くのジョブをトリガーします。
- Upstart は、必要なすべてのジョブが完了するまでこれを継続します。