O Upstart foi desenvolvido pela Canonical, sendo a implementação de init no Ubuntu por um tempo; no entanto, nas instalações modernas do Ubuntu, o systemd é agora utilizado. O Upstart foi criado para melhorar os problemas do SysV, como processos de inicialização rígidos, bloqueio de tarefas, etc. O modelo orientado a eventos e jobs do Upstart permite que ele responda a eventos à medida que eles ocorrem.
Para descobrir se você está usando o Upstart, se você tiver um diretório /usr/share/upstart, esse é um bom indicador.
Jobs são as ações que o Upstart executa, e eventos são mensagens recebidas de outros processos para acionar jobs. Para ver uma lista de jobs e suas configurações:
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
Dentro dessas configurações de job, você encontrará informações sobre como e quando iniciar os jobs.
Por exemplo, no arquivo networking.conf, pode estar escrito algo tão simples quanto:
start on runlevel [235]
stop on runlevel [0]
Isso significa que ele começará a configurar a rede no runlevel 2, 3 ou 5 e interromperá a rede no runlevel 0. Existem muitas maneiras de escrever o arquivo de configuração, e você descobrirá isso ao analisar as diferentes configurações de job disponíveis.
A maneira como o Upstart funciona é a seguinte:
- Primeiro, ele carrega as configurações de job de
/etc/init. - Assim que um evento de inicialização ocorre, ele executa os jobs acionados por esse evento.
- Esses jobs gerarão novos eventos, e então esses eventos acionarão mais jobs.
- O Upstart continua fazendo isso até completar todos os jobs necessários.