E agora para as respostas do Ubuntu.
Esta é uma questão do Ubuntu Linux, e a versão 15 agora é lançada. O mundo do Ubuntu agora tem systemd. Mas, mesmo antes da versão 15, o mundo do Ubuntu já tinha sido lançado. Não há realmente uma razão para escrever scripts do System 5 rc
; e certamente não há boas razões para começar de lá.
Tanto o upstart quanto o systemd fazem todos os "controles de serviço". Tudo o que você precisa fazer é descrever o serviço .
systemd
Uma unidade de serviço systemd, a ser colocada em /etc/systemd/system/mailcatcher.service
, é
[Unit] Description=Ruby MailCatcher Documentation=http://mailcatcher.me/ [Service] # Ubuntu/Debian convention: EnvironmentFile=-/etc/default/mailcatcher Type=simple ExecStart=/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10 [Install] WantedBy=multi-user.target
Isso obtém automaticamente todos os controles systemd, como:
-
systemctl enable mailcatcher.service
para definir o serviço para ser iniciado automaticamente na inicialização. -
systemctl preset mailcatcher.service
para configurar o serviço para ser iniciado automaticamente na inicialização, se a política local permitir. -
systemctl start mailcatcher.service
para iniciar o serviço manualmente. -
systemctl status mailcatcher.service
para ver o status do serviço.
upstart
O Upstart é semelhante, e a modificação do arquivo de trabalho inicial da Fideloper LLC para essa pergunta fornece isso para /etc/init/mailcatcher.conf
:
description "Mailcatcher" start on runlevel [2345] stop on runlevel [!2345] respawn exec /usr/bin/mailcatcher --foreground --http-ip=192.168.50.10
Isso obtém automaticamente todos os controles iniciantes, como:
-
initctl start mailcatcher
para iniciar o serviço manualmente. -
initctl status mailcatcher
para ver o status do serviço.
Seção de daemontools de bônus
Para chutes, para o entretenimento de qualquer pessoa daemontools que use a família que o alcance através de uma pesquisa WWW, e para demonstrar outra razão para não começar no System 5 rc
scripts, eu corri aquela unidade de serviço do sistema através de < o comando convert-systemd-units
do conjunto de ferramentas do nosh para produzir o seguinte script de execução da família daemontools:
#!/bin/nosh #Run file generated from ./mailcatcher.service #Ruby MailCatcher chdir / read-conf --oknofile /etc/default/mailcatcher /usr/bin/mailcatcher --foreground --http-ip 192.168.50.10
Na verdade, o comando convert-systemd-units
gera um diretório de pacote de serviços nosh completo . Com esse diretório, que especifica informações de dependência e ordenação, instaladas como /var/sv/mailcatcher
em um sistema com o nosh service-manager
, obtém-se todos os controles nosh, como:
-
system-control enable mailcatcher.service
para definir o serviço para ser iniciado automaticamente na inicialização. -
system-control start mailcatcher.service
para iniciar o serviço manualmente. -
system-control status mailcatcher.service
para ver o status do serviço. -
system-control preset mailcatcher.service
para configurar o serviço para ser iniciado automaticamente na inicialização, se a configuração local (predefinições no estilo systemd ou/etc/rc.conf{,.local}
) permitirem.
Nem sequer inicie com o System 5 rc
files.
Veja este modelo usado pelo SaltStack for System 5% de scriptsrc
. Mesmo com a parametrização de SaltStack eliminada, são 59 linhas de código de script de shell, a maioria das quais é genérica que você teria que reinventar e reescrever. Novamente. E Celada já apontou onde você reinventou mal.
O arquivo de unidade do systemd tem 11 linhas de comprimento. O arquivo de trabalho inicial é de 8 linhas. O script nosh run
é 6. E eles fazem todos os mecanismos de início / parada / status para você. Não comece com o System V rc
, especialmente no Ubuntu Linux.
Leitura adicional
- Configurando o Mailcatcher . 2014-10-21. Servidores para Hackers. Fideloper LLC.
- James Hunt e Clint Byrum (2014). "Utilitários" . Cookbook Upstart .
- Jonathan de Boyne Pollard (2014). Uma análise lado a lado dos scripts e serviços de execução unidades. . Respostas frequentemente dadas.