Como o Upstart difere?
Upstart tem um modelo de iniciar qualquer trabalho disponível quando o evento acontecer. Compare isso com o systemd, que inicia processos que têm todos os outros sistemas em execução. A principal diferença é que o Upstart está esperando por eventos e o systemd está coordenando as dependências. Ambos os sistemas podem executar scripts regulares e ambos tentam iniciar em paralelo. Como as diferenças são tão pequenas, os scripts Upstart geralmente podem ser chamados apenas com um arquivo de serviço systemd. Eles também podem executar arquivos systemV inalterados. Na verdade, ambos procuram por uma estrutura de arquivo systemV antiga por padrão. A grande diferença é que o Upstart procura eventos definidos para iniciar qualquer coisa. Então, se você deseja adicionar seu próprio serviço, você precisa descobrir em que contexto você precisa de seu serviço. Normalmente, isso é fácil, pois você vai querer algo que rode, por exemplo, em sua área de trabalho. A área de trabalho começa com o nível de execução do evento 5, então você define isso em seu script. Para o systemd, em contraste, este é o alvo gráfico. No upstart, você também tem outros eventos que pode usar, como montagem, montagem e solicitação de teclado. Eles são tratados com o systemd por meio de soquetes e dbus.
Como você migra scripts?
Você tem todos os scripts Upstart em / etc / init, seus nomes são nomes de trabalho com uma extensão 'conf'. Os scripts não são executáveis, eles apenas apontam para um ou mais executáveis que devem ser executados. Em qualquer script Upstart, você definiu em qual evento o script deve iniciar e quando deve parar. Você também deve ter entradas pré-início e pós-parada. Eles irão preparar o ambiente e limpar após a execução. Um exemplo de script está abaixo
descrição "Um script simples"começar no nível de execução [2345]
parar no nível de execução [06]
reaparecimento
env SCRIPT_ENV_VAR = '/ caminho / para / arquivo.config '
chdir / caminho / para / script /
script exec bash.sh
A instrução 'exec' diz o que acontecerá quando você iniciá-lo manualmente. As diretivas start e stop definem quando o script iniciará automaticamente. Como você pode ver, você também pode definir o diretório em que ele será executado. Existem muitos outros aspectos do Upstart, mas você deve aprender como migrar para fora.
Para que este script funcione no systemd, você precisa criar um arquivo de serviço.
Unidade]Descrição = Um script simples
[Serviço]
Ambiente = SCRIPT_ENV_VAR = / caminho / para / arquivo.config
WorkingDirectory = / caminho / para / script
ExecStart = script / usr / bin / bash.sh
Reiniciar = sempre
[Instalar]
WantedBy = multiusuário.alvo
Aqui você pode ver que as mesmas coisas acontecem, mas com outras palavras-chave. O formato é simples e direto ao ponto. Em vez de níveis de execução, você aponta para qual destino deseja que seu script. Isso destaca que o systemd é totalmente sobre dependência e coisas iniciais para o ambiente específico. Observe também que o ExecStart aponta para um caminho global, ele nunca usa um caminho local.
Onde isso se destaca??
Upstart foi projetado para comportamento paralelo, mas também foi projetado para ser pequeno. Se você encontrar isso em qualquer lugar, ainda será em sistemas embarcados e ChromeOS. Sim, o ChromeOS tinha. A razão é que ele foi construído no topo do Ubuntu desde o início, na época em que o Ubuntu teve o upstart como o sistema inicial padrão. O ChromeOS, desde então, passou a usar o Gentoo como base.
Conclusão
Upstart é um tópico interessante, mas principalmente histórico. Você pode precisar dele apenas se você executar em sistemas antigos. A alternativa mais comum no Linux agora é o systemd. Se você tem reservas em relação ao systemd, deve procurar outros sistemas mínimos. Um interessante é o sem sucção, sinit. Ele suporta três sinais e você deve escrever todos os scripts para ele ou modificar os scripts de outra pessoa. Este pode ser um exercício interessante, mas só é útil se você estiver trabalhando em um sistema mínimo e especializado.