Executando comandos na inicialização em 11.10

4

Então estou ficando confuso sobre como criar um script de inicialização no meu servidor Ubuntu 11.10. Eu li sobre init -scripts, upstart -jobs e mais, mas fico ainda mais confuso quanto mais leio.

Eu tentei vários guias, mas não encontrei ninguém que realmente trabalhe.

Alguém pode me mostrar como eu crio um script simples que funcionará em 11.10?

    
por Industrial 16.01.2012 / 18:43

2 respostas

8

A resposta de Marty Fried contém a informação mais valiosa: o Cookbook . Leitura através que faz você mais do que capaz de escrever seus scripts de inicialização.

No entanto, mexer com init.d, rc * .d, chkconfig et al, não é o que você deseja fazer. No Ubuntu (e outras distros), eles são apenas restos do material sysvinit antigo que muitos pacotes ainda usam ou apenas suportam por motivos legados. VOCÊ NÃO PRECISA OU QUER IR LÁ: -)

O mais simples de todos os scripts do Upstart é iniciar um daemon (colocar em /etc/init/mydaemon.conf):

exec /path/to/binary

Isso é tudo que você precisa. Isso faz com que o Upstart rode o daemon quando você faz start mydaemon .

OK, você quer começar automaticamente? Normalmente, iniciar após o dbus é uma escolha lógica, então vamos fazer isso:

start on started dbus
stop on stopping dbus
exec /path/to/binary

Este script simples inicia seu daemon sempre que o dbus foi iniciado e irá pará-lo antes que o dbus pare.

Você quer que ele reabra (reinicie) se ele falhar? Não tem problema, basta adicionar respawn em sua própria linha ao arquivo.

Seu daemon se bifurca ou se daemoniza? Bem, vamos pegá-lo, no entanto! Adicione expect fork no caso de um único fork ou expect daemon no caso de daemonização true (double fork).

Vamos resumir um script de inicialização simples para o seu daemon:

author "Your name goes here - optional"
description "What your daemon does shortly - optional"

start on started dbus
stop on stopping dbus

# console output  # if you want daemon to spit its output to console... ick
respawn # it will respawn if crashed/killed

exec /path/to/binary

Caso você não queira executar um daemon, mas apenas uma série de comandos, esqueça a linha exec e adicione uma seção de script:

script
   echo "Hello world!"
end script

Isso faz com que o Upstart execute o script em vez do daemon. A seção de script é apenas um script de shell normal, então você pode fazer praticamente qualquer coisa que quiser dentro dela.

Espero que ajude. Atenha-se aos arquivos de configuração do Upstart e não mexa no sistema legado e mantenha-se são: -)

    
por Tuminoid 23.01.2012 / 08:35
2

Parece que você estava no caminho certo. Algumas das confusões podem surgir porque o Ubuntu usa o Upstart em vez do tradicional sistema de inicialização do Linux, mas ainda suporta os métodos antigos. Então você pode ver métodos desatualizados que ainda funcionam.

Eu não sou um especialista, e também não tenho certeza de onde você está se perdendo, mas você leu as informações aqui: link

Em / etc, há muitos exemplos para examinar. Eu acho que os scripts reais estão em / etc / init, com links em vários diretórios como rc0.d, rc1.d, on up. Eles dependem de quais runlevels você quer que seu script seja executado. Parece que lembro que o Ubuntu realmente não usa muitos níveis de execução, então você pode ver muitas duplicações ou links não utilizados.

Além disso, lembre-se de que os mesmos scripts são usados para iniciar e parar.

    
por Marty Fried 16.01.2012 / 21:10