Script de inicialização simples no Ubuntu

2

Isso deve ser fácil, porque há um zilhão de perguntas sobre isso, mas aparentemente estou perdendo alguma coisa. Eu tenho um script que cria alguns diretórios que eu preciso para executar no momento da inicialização. É muito simples se preocupar em descobrir upstart ou qualquer coisa - não é um serviço, ele não precisa de monitoramento, ele só precisa ser executado no momento da inicialização, com privilégios de superusuário. Eu tentei colocar o script diretamente em /etc/rc2.d - ele foi executado uma vez, com apenas uma inicialização e nunca mais. O sistema de alguma forma lembra que correu e não foi desligado ou o que seja? Eu também adicionei uma tarefa cron como root e adicionei o script como uma tarefa @reboot, ainda sem dados. Isso está em uma instância do Ubuntu s3 - as instâncias do s3 têm alguma maneira bizarra de inicializar o que está fazendo com que essas coisas simples não funcionem?

edite : Eu devo mencionar que eu preciso que este script seja executado o mais cedo possível na inicialização, já que entre outras coisas ele configura / tmp, o que é um pouco importante para várias partes do o sistema.

    
por cbmanica 16.01.2013 / 03:27

2 respostas

2
  1. Coloque seu script em /etc/rc3.d/ -directory ou crie um link simbólico em outro local.
  2. Nomeie o script ou link em /etc/rc3.d/ to S50myscript . (O número influencia na ordem de início, o capital S é necessário.)
  3. Certifique-se de que o script tenha o bit de execução no lugar ( chmod +x script.sh )
  4. Certifique-se de que seu script inclua o intérprete no início, como #!/bin/sh , se for um script de shell.
  5. Se necessário, você pode depurá-lo colocando echos necessários no script, como echo "step1" >/script.log , echo "step2" >>/script.log etc.

Espero que isso ajude: -)

    
por 16.01.2013 / 08:17
1

Uma solução simples é adicionar seu código a /etc/rc.local . Então é executado como último script.

O rc.local é um script de inicialização do estilo antigo que é homenageado na maioria dos sabores de linux que eu conheço.

Se você quer um controle maior do que o tempo de invocação no procedimento de inicialização, por favor dê uma olhada em man update-rc.d para gerenciar o conjunto correto de links simbólicos dos diretórios técnicos /etc/rc?.d/ para o diretório /etc/init.d/ de seus scripts de inicialização. Aqui você pode definir a ordem da invocação do script no processo de inicialização.

PS: Meu conselho para o registro em log portátil de um script de inicialização é usar o comando logger . Isto dá ao seu shell script a capacidade de enviar mensagens para o daemon syslog .

PS: informações LSB ausentes

Um exemplo das informações do LSB para update-rc.d é uma seção de comentários como esta:

  ### BEGIN INIT INFO
  # Provides:          tomcat7
  # Required-Start:    $local_fs $remote_fs $network
  # Required-Stop:     $local_fs $remote_fs $network
  # Should-Start:      $named
  # Should-Stop:       $named
  # Default-Start:     2 3 4 5
  # Default-Stop:      0 1 6
  # Short-Description: Start Tomcat (c42Cfg user instance)
  # Description:       Start the Tomcat servlet engine (c42Cfg user instance).
  ### END INIT INFO
    
por 16.01.2013 / 14:25

Tags