O Ubuntu usa Upstart
em vez do tradicional sistema init
. O Upstart é mais strong que o init, mas é um pouco mais complicado que init
.
O Upstart, em contraste, é baseado em eventos. Um "evento" pode ser algo como "inicialização" ... ou pode ser bem mais específico, como "a rede está pronta para usar agora". Você pode especificar quais scripts dependem de quais eventos. Qualquer coisa que não esteja esperando por um evento pode ser executada sempre que houver CPU disponível.
Esse sistema baseado em eventos tem outra vantagem: você pode, teoricamente, usá-lo mesmo depois que o sistema estiver em funcionamento. O Upstart está destinado a assumir tarefas como conectar dispositivos externos, como pendrives (atualmente manipulados pelo udev e hal), ou executar programas em horários específicos (atualmente executados pelo cron).
Como você deve saber agora, um daemon morto (que não é executado na inicialização) pode estar ativo e ser iniciado devido a um evento.
O Ubuntu tem o / etc / init, para o Upstart, e o /etc/init.d, para os arquivos SysV antigos. Alguns dos arquivos nele são scripts regulares do SysV Init que ainda não foram migrados. Mas alguns serviços que migraram mantêm um link de /etc/init.d para / lib / init / upstart-job. Se você executar um desses, funcionará, mas imprimirá um aviso primeiro:
Rather than invoking init scripts through /etc/init.d, use the service(8) utility, e.g.
service mysql restart
Since the script you are attempting to invoke has been converted to an Upstart job, you may also use the restart(8) utility, e.g. restart mysql.
Em uma máquina Upstart, o init vem de upstart. Em vez de executar um script rc mestre que chama os scripts para um nível de execução específico, o init do Upstart obtém os trabalhos do seu diretório de trabalho.
Agora sabemos que não há uma maneira simples de listar daemons de autostart, você deve listar todos os daemons e verificá-los um por um. O daemon pode ser iniciado por init
ou por upstart
ou até mesmo por um evento posterior.
A maneira mais simples de obter essa lista é executar este comando no shell:
initctl show-config
A saída é assim:
...
hostname
start on startup
udevtrigger
start on ((startup and started udev) and not-container)
tty2
start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...
Alguns itens, como o primeiro, são tão simples que hostname
começa na inicialização. Mas outros itens podem parecer mais complicados. (Mas felizmente legível :-))